Android开发 - ActivityLifecycleCallbacks使用方法初探

原创 2014年10月21日 14:51:58

ActivityLifecycleCallbacks是什么?

  • Application通过此接口提供了一套回调方法,用于让开发者对Activity的生命周期事件进行集中处理。

为什么用ActivityLifecycleCallbacks?

  • 以往若需监测Activity的生命周期事件代码,你可能是这样做的,重写每一个Acivity的onResume(),然后作统计和处理:
    @Override
    protected void onResume() {
      super.onResume();
      //TODO 处理和统计代码
      Log.v(TAG, "onResume");
      Logger.v(TAG, "onResume");
      Logging.v(TAG, "onResume");
      ...
    }

  • ActivityLifecycleCallbacks接口回调可以简化这一繁琐过程,在一个类中作统一处理

ActivityLifecycleCallbacks怎么用?

  • android.app.Application.ActivityLifecycleCallbacks
  • 要求API 14+ (Android 4.0+)
  • 继承Application
    public class BaseApplication extends Application

  • 在AndroidManifest里起用自定义Application
    <application android:name=".global.BaseApplication"

  • 重写Application的onCreate()方法,或在Application的无参构造方法内,调用Application.registerActivityLifecycleCallbacks()方法,并实现ActivityLifecycleCallbacks接口

    public void onCreate() {
      super.onCreate();
      this.registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
     
        @Override
        public void onActivityStopped(Activity activity) {
            Logger.v(activity, "onActivityStopped");
        }
     
        @Override
        public void onActivityStarted(Activity activity) {
            Logger.v(activity, "onActivityStarted");
        }
     
        @Override
        public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
            Logger.v(activity, "onActivitySaveInstanceState");
        }
     
        @Override
        public void onActivityResumed(Activity activity) {
            Logger.v(activity, "onActivityResumed");
        }
     
        @Override
        public void onActivityPaused(Activity activity) {
            Logger.v(activity, "onActivityPaused");
        }
     
        @Override
        public void onActivityDestroyed(Activity activity) {
            Logger.v(activity, "onActivityDestroyed");
        }
     
        @Override
        public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
            Logger.v(activity, "onActivityCreated");
        }
      });
    };

  • 运行结果(Logcat日志)

    10-21 14:32:57.722: V/WelcomeActivity(8085): onActivityCreated
    10-21 14:32:57.762: V/WelcomeActivity(8085): onActivityStarted
    10-21 14:32:57.762: V/WelcomeActivity(8085): onActivityResumed
    10-21 14:32:59.164: V/WelcomeActivity(8085): onActivityPaused
    10-21 14:32:59.194: V/MainActivity(8085): onActivityCreated
    10-21 14:32:59.224: V/MainActivity(8085): onActivityStarted
    10-21 14:32:59.224: V/MainActivity(8085): onActivityResumed
    10-21 14:32:59.735: V/WelcomeActivity(8085): onActivityStopped
    10-21 14:32:59.735: V/WelcomeActivity(8085): onActivityDestroyed
    10-21 14:33:06.502: V/MainActivity(8085): onActivityPaused
    10-21 14:33:06.612: V/MainActivity(8085): onActivityStopped
    10-21 14:33:06.612: V/MainActivity(8085): onActivityDestroyed

ActivityLifecycleCallbacks的拓展用法

  • 本次初探仅尝试使用Log日志工具作简要测试,如需满足较复杂的统计或调试需求时,此法可能会大大减少插入代码量,提高效率

  • API仅在14+版本上提供此接口回调,Android 4.0以下系统如何使用?

  • API仅针对上述几个Activity的生命周期事件留出了接口回调,可能已无法满足日益过渡为使用Fragment的今日需求, 如何在更大范围内应用LifecycleCallbacks?
版权声明:本文为博主原创文章,未经博主允许不得转载。

神奇的ActivityLifecycleCallbacks,解决Activity管理的后顾之忧

最近做项目,在极光推送收到通知时,经常要各种跳转。那么一大堆问题来了:收到通知时,应用是否打开?应用打开了是否处于前台(有没有按Home键之类的)?处于栈顶的Activity是否是你要跳转的Activ...
  • xiaoyantan
  • xiaoyantan
  • 2017年04月21日 19:46
  • 1112

ActivityLifecycleCallbacks简单介绍

ActivityLifecycleCallbacks是干什么的? 以往若需监测Activity的生命周期事件代码,你可能是这样做的,重写每一个Acivity的onResume(),然后作统计和处理:...
  • f112122
  • f112122
  • 2015年07月27日 11:16
  • 1211

Application.ActivityLifecycleCallbacks的使用方法

ActivityLifecycleCallbacks是什么? Application通过此接口提供了一套回调方法,用于让开发者可以对Activity的生命周期事件进行集中处理。 使...
  • u010121444
  • u010121444
  • 2016年01月16日 15:30
  • 817

优雅的使用ActivityLifecycleCallbacks管理Activity和区分App前后台

一、ActivityLifecycleCallbacks接口介绍API 14之后,在Application类中,提供了一个应用生命周期回调的注册方法,用来对应用的生命周期进行集中管理,这个接口叫reg...
  • u010072711
  • u010072711
  • 2017年08月11日 14:23
  • 667

ActivityLifecycleCallbacks

一、一些废话今天早上快5点的时候才睡的觉,早上不到10点起来就是研究那个Google Analytics。因为新增了一个需求就是希望记录用户的类型,需要用到其中的custom dimension.但是...
  • wxv111
  • wxv111
  • 2016年03月09日 23:31
  • 359

app整个应用生命周期管理ActivityLifecycleCallbacks,registerActivityLifecycleCallbacks

最近由于写手势密码所以接触到一个问题就是手势密码植入应用后唤起的问题,比方说类似qq的手势密码如何在应用为后台的时候再次进入qq能够使手势密码调用,在研究这个问题的时候接触到这个接口 Activ...
  • qq_29406793
  • qq_29406793
  • 2016年03月23日 10:41
  • 938

Android中ActivityLifecycleCallbacks监听Activity们的生命周期

如果你还在Activity的声明周期函数(onCreate、onStart)打印log来看activity的声明周期,那么你就out了! 今天楼主叫你用ActivityLifecycleCallba...
  • lintcgirl
  • lintcgirl
  • 2015年05月04日 10:19
  • 5693

利用ActivityLifecycleCallbacks判断APP是否在后台运行

转自http://blog.csdn.net/lfdfhl/article/details/51045414 在开发的时候,我们时常有这样一个需求:判断APP是否在后台运行?  常见的方式...
  • xiongkai520520
  • xiongkai520520
  • 2016年09月08日 16:51
  • 571

适应6.0,全局Dialog终极解决方案 Application.ActivityLifecycleCallbacks

6.0推出之后,部分手机完全限制了全局Toast弹出类型。so 撸主 (http://blog.csdn.net/a940659387/article/details/50152561) 这个文章...
  • a940659387
  • a940659387
  • 2016年09月08日 17:18
  • 3029

registerActivityLifecycleCallbacks 的用途

开发中,有时候需要监听每一个Activity的运行情况,比如统计用户对每个Activity使用情况,我们可以定义一个BaseActivity,在onStart()和onStop()人工插入统计方法。 ...
  • dxpqxb
  • dxpqxb
  • 2014年05月15日 20:02
  • 10207
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android开发 - ActivityLifecycleCallbacks使用方法初探
举报原因:
原因补充:

(最多只允许输入30个字)