Android应用前后台切换监听,借助ActivityLifecycleCallbacks实现
2018-01-31 11:49
609 查看
有时需要监听到应用在前后台切换并做些处理,一般的做法可能是建立一个BaseActivity,然后全部的Activity都继承它,在BaseActivity的onStart和onStop中计数去处理。这样并不是最好的方式,不做详细介绍,有更好的方式,道理其实差不多,就是借助ActivityLifecycleCallbacks来实现。
一、写了个帮助类:
二、Application中使用(注意:仅在Application中才能使用,因为Application的生命周期能监听到每个Activity)
一、写了个帮助类:
package com.dway.helper; import android.app.Activity; import android.app.Application; import android.os.Bundle; /** * 应用前后台状态监听帮助类,仅在Application中使用 * Created by dway on 2018/1/30. */ public class AppFrontBackHelper { private OnAppStatusListener mOnAppStatusListener; public AppFrontBackHelper() { } /** * 注册状态监听,仅在Application中使用 * @param 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; @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { } @Override public void onActivityStarted(Activity activity) { activityStartCount++; //数值从0变到1说明是从后台切到前台 if (activityStartCount == 1){ //从后台切到前台 if(mOnAppStatusListener != null){ mOnAppStatusListener.onFront(); } } } @Override public void onActivityResumed(Activity activity) { } @Override public void onActivityPaused(Activity activity) { } @Override public void onActivityStopped(Activity activity) { activityStartCount--; //数值从1到0说明是从前台切到后台 if (activityStartCount == 0){ //从前台切到后台 if(mOnAppStatusListener != null){ mOnAppStatusListener.onBack(); } } } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { } @Override public void onActivityDestroyed(Activity activity) { } }; public interface OnAppStatusListener{ void onFront(); void onBack(); } }
二、Application中使用(注意:仅在Application中才能使用,因为Application的生命周期能监听到每个Activity)
public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); AppFrontBackHelper helper = new AppFrontBackHelper(); helper.register(MyApp.this, new AppFrontBackHelper.OnAppStatusListener() { @Override public void onFront() { //应用切到前台处理 } @Override public void onBack() { //应用切到后台处理 } }); } }也可以直接在Application里面写,但写成帮助类,是为了不用每次都去写,减轻Application的代码量
相关文章推荐
- Android进阶——借助简单便捷的ActivityLifecycleCallbacks实现全周期监听Activity
- Android 使用ActivityLifecycleCallbacks监听自己应用Activity的生命周期
- android基础知识---用ActivityLifecycleCallbacks实现后台回来展示广告
- 利用ActivityLifecycleCallbacks实现前后台进程切换
- 使用registerActivityLifecycleCallbacks实现整个app所有activity生命周期的监听和处理
- Android中应用前后台切换监听的实现详解
- android基础知识---ActivityLifecycleCallbacks监听Activity们的生命周期
- Android中ActivityLifecycleCallbacks监听Activity们的生命周期
- 【Android】利用Activity生命周期监听应用前后台切换
- Android开发——使用ActivityLifecycleCallbacks监控App是否处于后台
- Android之通过ActivityLifecycleCallbacks判断程序是否运行在后台
- [置顶] 利用ActivityLifecycleCallBack监控app前后台状态切换,实现手势密码即九宫格解锁
- Android 监听app前台、后台状态切换的实现方案
- 利用ActivityLifecycleCallbacks判断APP是否在后台运行
- Android开发 - ActivityLifecycleCallbacks使用方法初探
- Android之ActivityLifecycleCallbacks的得到当前的activity的状态
- Android开发 - ActivityLifecycleCallbacks使用方法初探
- 利用ActivityLifecycleCallbacks判断APP是否在后台运行
- Android:监听应用前后台切换及思考
- Android 应用监听后台切换前台的方法