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?

Android开发 - ActivityLifecycleCallbacks用法初探的更多相关文章

  1. Android开发PreferenceActivity 用法的代码

    将开发过程中常用的一些内容做个收藏,下面资料是关于Android开发PreferenceActivity 用法的内容,希望对大伙有一些用处.public class Setting extends P ...

  2. Android开发 ViewConfiguration 用法

    ViewConfiguration 实例获取 ViewConfiguration viewConfiguration = ViewConfiguration.get(Context); 常用对象方法 ...

  3. Android开发中Bundle用法包裹数据(转)

    Android开发中Bundle用法包裹数据 Bundle的经典用法,包裹数据放入Intent中,目的在于传输数据. SDK 里是这样描述: A mapping from String values ...

  4. Android开发学习之路--Android系统架构初探

    环境搭建好了,最简单的app也运行过了,那么app到底是怎么运行在手机上的,手机又到底怎么能运行这些应用,一堆的电子元器件最后可以运行这么美妙的界面,在此还是需要好好研究研究.这里从芯片及硬件模块-& ...

  5. Android开发--IntentService的用法,你错过了什么

    Android开发--IntentService的用法,你错过了什么 . 本文链接:https://blog.csdn.net/smbroe/article/details/45009721 Inte ...

  6. Android开发final的用法

    Android开发final的用法   final如果修饰类,该类不能被继承: final如果修饰变量,该变量不能被修改,不能再重新赋值,即变为常量: final如果修饰方法,该方法不能被重写: 此外 ...

  7. android开发环境搭建日记和嵌入式Android开发环境初探

    非常感谢博客园的各位,按照你们的博文,还有利用百度和谷歌逐渐建立了android的开发环境,只是给自己备份参考查看,看过的人可以忽略这篇文章. 本文章大部分参考了:http://www.cnblogs ...

  8. Android开发之漫漫长途 Ⅳ——Activity的显示之ViewRootImpl初探

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...

  9. Android开发之漫漫长途 XI——从I到X的小结

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...

随机推荐

  1. display:inline-block的运用

    在实习中做专题时,遇到的一个问题:建立一个宽度很长的一个页面,里面包含许多列.或许许多人认为直接设置float:left:不就行了 但是这个有一个问题,你必须把外面的div的宽度设置的很长已满足大于所 ...

  2. Python 中的类的相关操作

    构造函数 构造函数是任何类都有的特殊方法.当要创建一个类时,就要调用构造函数.他的名字是__init__.init的前后分别是两个下划线.时间类Time的构造函数如下: >>> cl ...

  3. 一个问题:关于类型转换Type Cast(汇编讲解 as 语法)

    问题如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34   ...

  4. linux下C/C++IDE比较——Code::Blocks

    工欲善其事,必先利其器.用了这么久的linux,现在比较主流的几个C/C++的IDE基本已都用过了,现在来对他们做一下简单的比较. 1.VIM首先要说的是VIM.我认为,VIM只是一个编辑器,不能算是 ...

  5. 1.0.1-学习Opencv与MFC混合编程之---播放AVI视频

    资源源代码:http://download.csdn.net/detail/nuptboyzhb/3961639 版本1.0.1新增内容 Ø  新建菜单项,Learning OpenCV——> ...

  6. Asp.NET调用百度翻译

    Asp.NET调用百度翻译,图示: HTML: <%@ Page Language="C#" AutoEventWireup="true" CodeFil ...

  7. Entity - 使用EF框架进行增删改查 - 数据库先行

    数据库先行:先创建数据库,然后进行增删查该操作. 要操作的表结构(表名:Tb_Category): 创建一个控制台程序: 添加一个ADO.NET实体数据模型: 1.对控制台程序右键 2.选择ADO.N ...

  8. MD5加密以及验证加密-加盐

    加密与解密算法: /// <summary> /// 签名字符串 32位 /// </summary> /// <param name="input" ...

  9. setOnClickListener报空指针异常

    1.异常提示: 2.错误原因: 先看代码: public class MainActivity extends ActionBarActivity { private Button btn_test; ...

  10. QT源码分析(从QApplication开始)

    QT源码分析 转载自:http://no001.blog.51cto.com/1142339/282130 今天,在给同学讲东西的时候,谈到了Qt源代码的问题,才发现自己对Qt机制的了解是在太少了,而 ...