转载自 http://blog.csdn.net/tongcpp/article/details/40344871

ActivityLifecycleCallbacks是什么?

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

为什么用ActivityLifecycleCallbacks?

  • 以往若需监测Activity的生命周期事件代码,你可能是这样做的,重写每一个Acivity的onResume(),然后作统计和处理:

     
    1. @Override
    2. protected void onResume() {
    3. super.onResume();
    4. //TODO 处理和统计代码
    5. Log.v(TAG, "onResume");
    6. Logger.v(TAG, "onResume");
    7. Logging.v(TAG, "onResume");
    8. ...
    9. }
    
    
     
  • ActivityLifecycleCallbacks接口回调可以简化这一繁琐过程,在一个类中作统一处理

ActivityLifecycleCallbacks怎么用?

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

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

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

     
    1. public void onCreate() {
    2. super.onCreate();
    3. this.registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
    4. @Override
    5. public void onActivityStopped(Activity activity) {
    6. Logger.v(activity, "onActivityStopped");
    7. }
    8. @Override
    9. public void onActivityStarted(Activity activity) {
    10. Logger.v(activity, "onActivityStarted");
    11. }
    12. @Override
    13. public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
    14. Logger.v(activity, "onActivitySaveInstanceState");
    15. }
    16. @Override
    17. public void onActivityResumed(Activity activity) {
    18. Logger.v(activity, "onActivityResumed");
    19. }
    20. @Override
    21. public void onActivityPaused(Activity activity) {
    22. Logger.v(activity, "onActivityPaused");
    23. }
    24. @Override
    25. public void onActivityDestroyed(Activity activity) {
    26. Logger.v(activity, "onActivityDestroyed");
    27. }
    28. @Override
    29. public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
    30. Logger.v(activity, "onActivityCreated");
    31. }
    32. });
    33. };
    
    
     
  • 运行结果(Logcat日志)

     
    1. 10-21 14:32:57.722: V/WelcomeActivity(8085): onActivityCreated
    2. 10-21 14:32:57.762: V/WelcomeActivity(8085): onActivityStarted
    3. 10-21 14:32:57.762: V/WelcomeActivity(8085): onActivityResumed
    4. 10-21 14:32:59.164: V/WelcomeActivity(8085): onActivityPaused
    5. 10-21 14:32:59.194: V/MainActivity(8085): onActivityCreated
    6. 10-21 14:32:59.224: V/MainActivity(8085): onActivityStarted
    7. 10-21 14:32:59.224: V/MainActivity(8085): onActivityResumed
    8. 10-21 14:32:59.735: V/WelcomeActivity(8085): onActivityStopped
    9. 10-21 14:32:59.735: V/WelcomeActivity(8085): onActivityDestroyed
    10. 10-21 14:33:06.502: V/MainActivity(8085): onActivityPaused
    11. 10-21 14:33:06.612: V/MainActivity(8085): onActivityStopped
    12. 10-21 14:33:06.612: V/MainActivity(8085): onActivityDestroyed
    
    
     

ActivityLifecycleCallbacks的拓展用法

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

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

  • API仅针对上述几个Activity的生命周期事件留出了接口回调,可能已无法满足日益过渡为使用Fragment的今日需求, 如何在更大范围内应用LifecycleCallbacks?

ActivityLifecycleCallbacks 的简单使用的更多相关文章

  1. Android使用ActivityLifecycleCallbacks管理Activity和区分App前后台

    一.ActivityLifecycleCallbacks接口介绍 官方地址:https://developer.android.com/reference/android/app/Applicatio ...

  2. 【造轮子】打造一个简单的万能Excel读写工具

    大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...

  3. Fabio 安装和简单使用

    Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...

  4. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  5. 哪种缓存效果高?开源一个简单的缓存组件j2cache

    背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...

  6. 在Openfire上弄一个简单的推送系统

    推送系统 说是推送系统有点大,其实就是一个消息广播功能吧.作用其实也就是由服务端接收到消息然后推送到订阅的客户端. 思路 对于推送最关键的是服务端向客户端发送数据,客户端向服务端订阅自己想要的消息.这 ...

  7. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  8. 使用 Nodejs 搭建简单的Web服务器

    使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块.文件系统.url解析模块. ...

  9. ASP.NET Aries 入门开发教程2:配置出一个简单的列表页面

    前言: 朋友们都期待我稳定地工作,但创业公司若要躺下,也非意念可控. 若人生注定了风雨飘摇,那就雨中前行了. 最机开始看聊新的工作机会,欢迎推荐,创业公司也可! 同时,趁着自由时间,抓紧把这系列教程给 ...

随机推荐

  1. python购物车-基础版本

    # 1. 用户先给自己的账户充钱:比如先充3000元.# 2. 页面显示 序号 + 商品名称 + 商品价格,如:# 1 电脑 1999# 2 鼠标 10# …# n 购物车结算# 3. 用户输入选择的 ...

  2. 使用HttpClient发送文件流到服务器端

    适用场景:网络绝对路径的URL文件或图片,不存储到本地,转换成stream,直接使用HTTPClient传送到SpringBoot的服务端,将文件存储下来,并返回一个文件地址.目前分层架构的系统越来越 ...

  3. python3 实现对代码文件中注释的翻译

    心血来潮,昨天看见群里讨论一段图片转pdf的代码,直接拿过来发现不能用,原来是因为代码中传的文件对象不对,源码中说传递的是一个文件路径或一个文件对象.他传的是一个文件名,很是尴尬. 想了想,主要原因还 ...

  4. flagSet 使用

    var ( flagSet = flag.NewFlagSet("main", flag.ExitOnError) // 参数定义 version = flagSet.Bool(& ...

  5. Debug命令详解

    Debug在学习汇编的过程中,担任着一个非常重要的角色,是一个极其重要的调试工具,所以学会它是必须的. 命令格式 功能说明 A [地址] 输入汇编指令 C [范围] 起始地址 对由“范围”指定的区域与 ...

  6. 洛谷p3799:妖梦切木棒

    题意:任选四段木板拼正三角形 因为是正三角形 所以我们可以想到至少是两个相同的,剩下两个拼成最后一条边 我们只需要枚举边长即可 那么我们对每次读入的x,使他的cnt++ 考虑用一个二重循环 外层枚举边 ...

  7. mysql学习3

    1.索引 索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据.对于索引, 会保存在额外的文件中. 作用: 约束 加速查找 1.1.建立索引 a.额外的文件保存特殊的数据结构 ...

  8. iOS UILabel 文字 置顶/置底 实现

    iOS UILabel控件默认文字位置是居中的,如图所示: 但是我们经常碰到这样的需求,希望文字向上置顶,或者向下置底,但是很遗憾,iOS API中并没有提供相应的属性和方法,需要我们手动设置. 利用 ...

  9. 我的第一次做app的细节

    第一次做一个app 发现 需要和前端沟通好而且 还要注意细节  效果图细节不要忘记 尽量多穿数据不要少传数据 而且 对接 注意细节

  10. class A<T> where T:new()

    class A<T> where T:new() 这是类型参数约束,where表明了对类型变量T的约束关系.where T:A 表示类型变量是继承于A的,或者是A本身.where T: n ...