博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发 - ActivityLifecycleCallbacks用法初探
阅读量:6933 次
发布时间:2019-06-27

本文共 2696 字,大约阅读时间需要 8 分钟。

ActivityLifecycleCallbacks是什么?

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

为什么用ActivityLifecycleCallbacks?

  • 以往若需监測Activity的生命周期事件代码,你可能是这样做的。重写每个Acivity的onResume(),然后作统计和处理:
     
    @Overrideprotected 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的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): onActivityCreated10-21 14:32:57.762: V/WelcomeActivity(8085): onActivityStarted10-21 14:32:57.762: V/WelcomeActivity(8085): onActivityResumed10-21 14:32:59.164: V/WelcomeActivity(8085): onActivityPaused10-21 14:32:59.194: V/MainActivity(8085): onActivityCreated10-21 14:32:59.224: V/MainActivity(8085): onActivityStarted10-21 14:32:59.224: V/MainActivity(8085): onActivityResumed10-21 14:32:59.735: V/WelcomeActivity(8085): onActivityStopped10-21 14:32:59.735: V/WelcomeActivity(8085): onActivityDestroyed10-21 14:33:06.502: V/MainActivity(8085): onActivityPaused10-21 14:33:06.612: V/MainActivity(8085): onActivityStopped10-21 14:33:06.612: V/MainActivity(8085): onActivityDestroyed

ActivityLifecycleCallbacks的拓展使用方法

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

  • API仅在14+版本号上提供此接口回调,

  • API仅针对上述几个Activity的生命周期事件留出了接口回调,可能已无法满足日益过渡为使用Fragment的今日需求。

转载地址:http://qvgjl.baihongyu.com/

你可能感兴趣的文章
深度|10分钟读懂阿里巴巴高级专家在Flutter Live2018的分享
查看>>
大规模深度学习预测场景下 codegen 的思考与应用
查看>>
spring框架使用Quartz执行定时任务实例详解
查看>>
全链路跟踪系统设计与实践(转载)
查看>>
支付接口教程,详解支付宝接口(二)
查看>>
SourceTree 教程文档(了解界面)
查看>>
wpf 依赖属性和附加属性
查看>>
rocketMq-producer介绍
查看>>
谨慎的Waymo CEO:未来几十年,自动驾驶无法做到无处不在
查看>>
Django搭建个人博客(二)
查看>>
SSM+maven实现答题管理系统(二)
查看>>
玩转报表排名
查看>>
SQL Server 默认跟踪(Default Trace)
查看>>
[剑指offer] 字符流中第一个不重复的字符
查看>>
平面上给定n条线段,找出一个点,使这个点到这n条线段的距离和最小。
查看>>
Source Insight 3.X 标签插件v1.0发布
查看>>
百度AI生态方法论升级,AI开放平台深入7大细分领域
查看>>
Linux下配置Golang开发环境
查看>>
AI技术出海 - 阿里云GPU服务器助力旷视勇夺4项世界第一
查看>>
《Learning Scrapy》(中文版)第11章 Scrapyd分布式抓取和实时分析
查看>>