Android开发之判断APP前后台的方法
老套路看图:
我们可以利用application监听全局的所有activity的生命周期前提版本大于Android4.0
提供一个监听的工具类
package com.mchsdk.open;import android.app.Activity;
import android.app.Application;
import android.os.Bundle;/*** @author XiaYiYe5* 2020年7月14日15:32:02* 监听游戏前后台的工具类*/
public class AppFrontBackHelper {private OnAppStatusListener mOnAppStatusListener;public AppFrontBackHelper() {}/*** 注册状态监听,仅在Application中使用** @param application 全局application* @param listener 监听器*/public void register(Application application, OnAppStatusListener listener) {mOnAppStatusListener = listener;application.registerActivityLifecycleCallbacks(activityLifecycleCallbacks);}public void unRegister(Application application) {application.unregisterActivityLifecycleCallbacks(activityLifecycleCallbacks);}private Application.ActivityLifecycleCallbacks activityLifecycleCallbacks = new Application.ActivityLifecycleCallbacks() {//打开的Activity数量统计private int activityStartCount = 0;@Overridepublic void onActivityCreated(Activity activity, Bundle savedInstanceState) {}@Overridepublic void onActivityStarted(Activity activity) {activityStartCount++;//数值从0 变到 1 说明是从后台切到前台if (activityStartCount == 1) {//从后台切到前台if (mOnAppStatusListener != null) {mOnAppStatusListener.onFront();}}}@Overridepublic void onActivityResumed(Activity activity) {}@Overridepublic void onActivityPaused(Activity activity) {}@Overridepublic void onActivityStopped(Activity activity) {activityStartCount--;//数值从1到0说明是从前台切到后台if (activityStartCount == 0) {//从前台切到后台if (mOnAppStatusListener != null) {mOnAppStatusListener.onBack();}}}@Overridepublic void onActivitySaveInstanceState(Activity activity, Bundle outState) {}@Overridepublic void onActivityDestroyed(Activity activity) {}};public interface OnAppStatusListener {/*** 前台运行*/void onFront();/*** 后台运行*/void onBack();}
}
再看下如何调用:
可以在application的onCreate或者attachBaseContext生命周期里面调用,
/*** @author xiayiye5* 2020年6月5日16:42:48*/
public class MyApplication extends Application {@Overrideprotected void attachBaseContext(Context base) {super.attachBaseContext(base);AppFrontBackHelper helper = new AppFrontBackHelper();helper.register(MyApplication.this, new AppFrontBackHelper.OnAppStatusListener() {@Overridepublic void onFront() {//应用切到前台处理ToastUtil.show(MyApplication.this, "前台了");YhshUtils.getInstance().countTime(MyApplication.this);}@Overridepublic void onBack() {//应用切到后台处理ToastUtil.show(MyApplication.this, "后台了");//APP已切换到后台,结束游戏时间计时YhshUtils.getInstance().uploadOnlineTime();}});}
}
当然也可以写个方法传递application的对象调用如下:
看代码:
public void init(final Context con, boolean isDebug) {init(con, null, isDebug);//监听APP在前后台的方法AppFrontBackHelper helper = new AppFrontBackHelper();helper.register((Application) con, new AppFrontBackHelper.OnAppStatusListener() {@Overridepublic void onFront() {//应用切到前台处理ToastUtil.show(con, "前台了");YhshUtils.getInstance().countTime(con);}@Overridepublic void onBack() {//应用切到后台处理ToastUtil.show(con, "后台了");//APP已切换到后台,结束游戏时间计时YhshUtils.getInstance().uploadOnlineTime();}});}
感谢博主:监听APP前后台博主直达
Android开发之判断APP前后台的方法相关推荐
- Android开发环境搭建及常见问题解决方法
Android开发环境搭建及常见问题解决方法 参考文章: (1)Android开发环境搭建及常见问题解决方法 (2)https://www.cnblogs.com/rwxwsblog/p/476978 ...
- 文件管理器android实现,Android开发之简单文件管理器实现方法
易采站长站为您分析Android开发之简单文件管理器实现方法,简单实现了Android的文件目录查看,文件重命名,打开,删除等功能,需要的朋友可以参考下 本文实例讲述了Android开发之简单文件管理 ...
- android判断多个按钮,Android开发之判断有无虚拟按键(导航栏)的实例
判断有无虚拟按键(导航栏) 现在很大一部分手机没有虚拟按键,一部分有.我们在做适配的时候可能会用到这方面的知识. 例如:屏幕填充整个屏幕的时候,没办法只能连导航栏一起填充了,但是这个不是我们想要的,我 ...
- Android开发——RecyclerView特性以及基本使用方法(二)
0. 前言 随着Android的发展,虽然ListView依旧重要,但RecyclerView确实越来越多的被大家使用.但显然并不能说RecyclerView就一定优于ListView,而是应该根据 ...
- Android开发中调用系统窗口的方法
//直接拨号 Intent callIntent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:12345678")); start ...
- android自定义省略号,Android开发自定义TextView省略号样式的方法
本文实例讲述了Android开发自定义TextView省略号样式的方法.分享给大家供大家参考,具体如下: 在布局xml中设置textView的字段 android:maxLines="2&q ...
- android 判断安装微信,Android开发中判断手机是否安装了QQ或者微信
下面一段代码给大家分享了android中判断手机是否安装了qq或者微信,代码简单易懂,非常不错,具有参考借鉴价值,需要的的朋友参考下吧 public static boolean isWeixinAv ...
- 关于android开发中startActivityForResult废弃的替换方法调用
关于android开发中startActivityForResult废弃的替换方法调用 在最近一段时间中,能在开发时看到在android studio中,startActivityForResult方 ...
- android动画背景,Android开发之背景动画简单实现方法
在Android开发中,我们都会接到项目的业务需求,实现应用程序背景动画的效果,接下来,爱站技术频道小编带给大家的Android开发之背景动画简单实现方法. 1.先创建动画层,有三张图片 androi ...
最新文章
- python验证中心极限定理_我竟然混进了Python高级圈子!
- 判断数组中某个元素除自身外是否和其他数据不同_布隆过滤器,我也是个处理过 10 亿数据的人...
- c语言回溯算法骑士周游,191-骑士周游回溯算法代码实现(1)
- mysql primary重复_mysql:键'PRIMARY'和奇怪的ID行为重复条目'0'
- 实数域上的压缩映射不动点原理
- Linux常用视频播放器
- 本科蓝色学术论文答辩PPT模板
- 使用Python绘制词云图(自定义形状)
- 【FLASH实例1000教程】(4)上
- 大数据时代——你是否希望“被遗忘”
- Chrome Autofill 删除规则
- Panel自定义边框
- 2.9 Nginx一致性HASH算法
- kafka删除标记删除(marked for deletion)的topic
- 【领英批量加好友的方法技巧】
- Linux系统启动流程(超详细)
- android Preference以及监听事件学习
- HashMap实现单选(HansMap的遍历)
- SSM二手车交易系统设计/二手交易系统,
- 刚刚,潜水员将侧扫声呐Klein4000拖鱼打捞上来了
热门文章
- 【荐读】一名95后的嵌入式软件工程师,成长之路!
- Modelsim10.7中文注释乱码问题
- 正则表达式_月隐学python第20课
- 肽键肽链内部分的计算机术语大全,生化资料
- 印度孟买机器人餐厅_印度孟买自动化展:该国最重要、规模最大的国际自动化展...
- 基于python的系统构建_搭建一个基于python的深度学习环境
- 关联表 会影响速度_有机硅胶怎么才会固化?固化速度受哪些因素影响?
- 2018.6.1信息安全铁人三项赛数据赛writeup
- matlab中数组创建方法
- VS2010/MFC编程入门之四(MFC应用程序框架分析)