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?

最新文章

  1. [AR+Vuforia]学习笔记
  2. 五子棋AI清月连珠开源
  3. Android 获取系统的联系人
  4. Asp.Net Form验证不通过,重复登录
  5. 单元测试篇----cppUnit的安装与使用
  6. Loadrunner中与事务相关的概念及函数
  7. java- 枚举的常见用法
  8. java web基础环境搭建
  9. MySQL汇总数据
  10. 小议 - 来自《XX时代XX公司》的笔试编程题目
  11. Jersey实现Restful服务
  12. [国嵌攻略][048][MMU配置与使用]
  13. npm scripts 脚本基础指南
  14. python网页爬虫开发之五-反爬
  15. 低级问题: jquery-ajax-alert(data) &lt;!DOCTYPE html PUBLIC &quot;-
  16. 2018-2019-2 网络对抗技术 20165301 Exp5 MSF基础应用
  17. Java 基础【16】 文件(文件夹) 创建和删除
  18. Week6——Lifecycle of JSF and Facelets
  19. PyQt5(2)——调整布局(布局管理器)第一个程序
  20. 【poj1222-又一道开关问题】高斯消元求解异或方程组

热门文章

  1. SLF4J: Failed to load class &quot;org.slf4j.impl.StaticLoggerBinder&quot;.
  2. [WCF]WCF起航
  3. asp.net2.0安全性(1)--用户角色篇(起篇)--转载来自车老师
  4. sql: PL/SQL proc
  5. C++ 需要返回值的函数却没有返回值的情况 单例模式
  6. &lt;1&gt; perl概述
  7. 基于visual Studio2013解决面试题之0409判断一个栈是否另外一个栈的弹出序列
  8. paip.php 配置ZEND DEBUGGER 断点调试for cli..
  9. AIX用户管理
  10. 使用JDBC进行数据库的事务操作(1)