Android开发 - ActivityLifecycleCallbacks用法初探
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用法初探的更多相关文章
- Android开发PreferenceActivity 用法的代码
将开发过程中常用的一些内容做个收藏,下面资料是关于Android开发PreferenceActivity 用法的内容,希望对大伙有一些用处.public class Setting extends P ...
- Android开发 ViewConfiguration 用法
ViewConfiguration 实例获取 ViewConfiguration viewConfiguration = ViewConfiguration.get(Context); 常用对象方法 ...
- Android开发中Bundle用法包裹数据(转)
Android开发中Bundle用法包裹数据 Bundle的经典用法,包裹数据放入Intent中,目的在于传输数据. SDK 里是这样描述: A mapping from String values ...
- Android开发学习之路--Android系统架构初探
环境搭建好了,最简单的app也运行过了,那么app到底是怎么运行在手机上的,手机又到底怎么能运行这些应用,一堆的电子元器件最后可以运行这么美妙的界面,在此还是需要好好研究研究.这里从芯片及硬件模块-& ...
- Android开发--IntentService的用法,你错过了什么
Android开发--IntentService的用法,你错过了什么 . 本文链接:https://blog.csdn.net/smbroe/article/details/45009721 Inte ...
- Android开发final的用法
Android开发final的用法 final如果修饰类,该类不能被继承: final如果修饰变量,该变量不能被修改,不能再重新赋值,即变为常量: final如果修饰方法,该方法不能被重写: 此外 ...
- android开发环境搭建日记和嵌入式Android开发环境初探
非常感谢博客园的各位,按照你们的博文,还有利用百度和谷歌逐渐建立了android的开发环境,只是给自己备份参考查看,看过的人可以忽略这篇文章. 本文章大部分参考了:http://www.cnblogs ...
- Android开发之漫漫长途 Ⅳ——Activity的显示之ViewRootImpl初探
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
- Android开发之漫漫长途 XI——从I到X的小结
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
随机推荐
- boost之program_options库,解析命令行参数、读取配置文件
一.命令行解析 tprogram_options解析命令行参数示例代码: #include <iostream> using namespace std; #include <boo ...
- MPMoviePlayerController导致statusBar消失,导致内存泄露leak
1.MPMoviePlayerController使statusBar消失 同事写项目时,运行程序总导致statusBar状态条消失,然后就是界面会上移20个像素,导致最下面空白界面,找原因一直不知道 ...
- 函数指针&绑定: boost::functoin/std::function/bind
see link: https://isocpp.org/wiki/faq/pointers-to-members function vs template: http://stackoverflow ...
- Hadoop SequenceFile
SequenceFile格式: 每一个SequenceFile都包含一个“头”(header).Header包含了以下几部分. 1.SEQ三个字母的byte数组 2.Version number的by ...
- poj-3895-Cycles of Lanes 简单DFS
题目链接: http://poj.org/problem?id=3895 题目意思: 在无向连通图中图中找一个经过边数最多的环. 解题思路: 从任意一点直接DFS,不用回溯,注意构成环的话至少有3条边 ...
- 基于visual Studio2013解决面试题之0409判断一个栈是否另外一个栈的弹出序列
题目
- Android JNI 编译正确 但是提示程序有错误无法运行 而且还看不到任何错误提示 的解决方法
前几篇中一直在通过Android做JNI调用,关于JNI的配置请见:http://blog.csdn.net/watkinsong/article/details/9849973 但是前一段时间就遇到 ...
- Swift - 跑酷游戏开发(SpriteKit游戏开发)
一,下面演示了如何开发一个跑酷游戏,实现的功能如下: 1,平台工厂会不断地生成平台,并且向左移动.当平台移出游戏场景时就可将其移除. 2,生成的平台宽度随机,高度随机.同时短平台踩踏的时候会下落. 3 ...
- DataGridView ——管理员对用户的那点操作
记得第一次做机房收费系统的时候,就在加入删除用户这出现了点小问题,由于一直都是一个容不得一点瑕疵的人.所以对查询用户的时候查询一次就会多一些空行我非常是不能容忍.看似非常小的问题,我却花了非常长的时间 ...
- keyset与entryset
1.基本概述 Set<Map.Entry<K,V>> entrySet() 返回此映射中包括的映射关系的 set 视图. Set<K> ...