老套路看图:

我们可以利用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前后台的方法相关推荐

  1. Android开发环境搭建及常见问题解决方法

    Android开发环境搭建及常见问题解决方法 参考文章: (1)Android开发环境搭建及常见问题解决方法 (2)https://www.cnblogs.com/rwxwsblog/p/476978 ...

  2. 文件管理器android实现,Android开发之简单文件管理器实现方法

    易采站长站为您分析Android开发之简单文件管理器实现方法,简单实现了Android的文件目录查看,文件重命名,打开,删除等功能,需要的朋友可以参考下 本文实例讲述了Android开发之简单文件管理 ...

  3. android判断多个按钮,Android开发之判断有无虚拟按键(导航栏)的实例

    判断有无虚拟按键(导航栏) 现在很大一部分手机没有虚拟按键,一部分有.我们在做适配的时候可能会用到这方面的知识. 例如:屏幕填充整个屏幕的时候,没办法只能连导航栏一起填充了,但是这个不是我们想要的,我 ...

  4. Android开发——RecyclerView特性以及基本使用方法(二)

    0.  前言 随着Android的发展,虽然ListView依旧重要,但RecyclerView确实越来越多的被大家使用.但显然并不能说RecyclerView就一定优于ListView,而是应该根据 ...

  5. Android开发中调用系统窗口的方法

    //直接拨号 Intent callIntent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:12345678")); start ...

  6. android自定义省略号,Android开发自定义TextView省略号样式的方法

    本文实例讲述了Android开发自定义TextView省略号样式的方法.分享给大家供大家参考,具体如下: 在布局xml中设置textView的字段 android:maxLines="2&q ...

  7. android 判断安装微信,Android开发中判断手机是否安装了QQ或者微信

    下面一段代码给大家分享了android中判断手机是否安装了qq或者微信,代码简单易懂,非常不错,具有参考借鉴价值,需要的的朋友参考下吧 public static boolean isWeixinAv ...

  8. 关于android开发中startActivityForResult废弃的替换方法调用

    关于android开发中startActivityForResult废弃的替换方法调用 在最近一段时间中,能在开发时看到在android studio中,startActivityForResult方 ...

  9. android动画背景,Android开发之背景动画简单实现方法

    在Android开发中,我们都会接到项目的业务需求,实现应用程序背景动画的效果,接下来,爱站技术频道小编带给大家的Android开发之背景动画简单实现方法. 1.先创建动画层,有三张图片 androi ...

最新文章

  1. python验证中心极限定理_我竟然混进了Python高级圈子!
  2. 判断数组中某个元素除自身外是否和其他数据不同_布隆过滤器,我也是个处理过 10 亿数据的人...
  3. c语言回溯算法骑士周游,191-骑士周游回溯算法代码实现(1)
  4. mysql primary重复_mysql:键'PRIMARY'和奇怪的ID行为重复条目'0'
  5. 实数域上的压缩映射不动点原理
  6. Linux常用视频播放器
  7. 本科蓝色学术论文答辩PPT模板
  8. 使用Python绘制词云图(自定义形状)
  9. 【FLASH实例1000教程】(4)上
  10. 大数据时代——你是否希望“被遗忘”
  11. Chrome Autofill 删除规则
  12. Panel自定义边框
  13. 2.9 Nginx一致性HASH算法
  14. kafka删除标记删除(marked for deletion)的topic
  15. 【领英批量加好友的方法技巧】
  16. Linux系统启动流程(超详细)
  17. android Preference以及监听事件学习
  18. HashMap实现单选(HansMap的遍历)
  19. SSM二手车交易系统设计/二手交易系统,
  20. 刚刚,潜水员将侧扫声呐Klein4000拖鱼打捞上来了

热门文章

  1. 【荐读】一名95后的嵌入式软件工程师,成长之路!
  2. Modelsim10.7中文注释乱码问题
  3. 正则表达式_月隐学python第20课
  4. 肽键肽链内部分的计算机术语大全,生化资料
  5. 印度孟买机器人餐厅_印度孟买自动化展:该国最重要、规模最大的国际自动化展...
  6. 基于python的系统构建_搭建一个基于python的深度学习环境
  7. 关联表 会影响速度_有机硅胶怎么才会固化?固化速度受哪些因素影响?
  8. 2018.6.1信息安全铁人三项赛数据赛writeup
  9. matlab中数组创建方法
  10. VS2010/MFC编程入门之四(MFC应用程序框架分析)