ActivityLifecycleCallbacks的正确使用姿势
来源:互联网 发布:winpe带网络 编辑:程序博客网 时间:2024/06/02 14:46
这是Android4.0之后的新Api,大多数人可能没有在意这一改动。但是对于一些框架的设计使用却有非常重要的意义的。
public interface ActivityLifecycleCallbacks { void onActivityCreated(Activity activity, Bundle savedInstanceState); void onActivityStarted(Activity activity); void onActivityResumed(Activity activity); void onActivityPaused(Activity activity); void onActivityStopped(Activity activity); void onActivitySaveInstanceState(Activity activity, Bundle outState); void onActivityDestroyed(Activity activity); }
重点在于
getApplication().dispatchActivityCreated(this, savedInstanceState);
每当来到Activity的生命周期回调的时候,Activity都会将事件分发到Application对应的方法,而Application则会调用我们实现的ActivityLifecycleCallbacks接口。这样使得我们可以在外部监听到每个Activity的生命周期。
这样的话,用处如下:
1.日志,保存记录Activity的活动,以及做一些测试。
2.框架设计中,如Http请求框架,需要提供在Activity被销毁时,cancel仍在队列中的请求。
3.框架使用中,如EventBus,Xutils等IOC框架,需要在OnCreate和OnDestory中注册和卸载的场景。可以使用ActivityLifecycleCallbacks避免显式在Activity中调用其Api。
至于在4.0以下获得相同效果,则需要代理系统框架中的Instrumentation类。
Object mainThread = KernelObject.declaredGet(application.getBaseContext(), "mMainThread"); Field instrumentationField = KernelReflect.declaredField(mainThread.getClass(), "mInstrumentation"); instrumentation = new MyInstrumentation(); KernelObject.copy(KernelReflect.get(mainThread, instrumentationField), instrumentation); KernelReflect.set(mainThread, instrumentationField, instrumentation);
0 0
- ActivityLifecycleCallbacks的正确使用姿势
- Fragment使用的正确姿势
- git 的正确使用姿势
- 使用libcurl的正确姿势
- datasheet 使用的正确姿势
- layout_weight的正确使用姿势
- SharedPreference使用的正确姿势
- 使用layoutinflater的正确姿势
- WWW的正确使用姿势
- 使用layoutinflater的正确姿势
- MongoDB的正确使用姿势
- 枚举使用的正确姿势
- 使用SQLiteOpenHelper的正确姿势
- 动画的正确使用姿势
- FragmentTabHost的正确使用姿势
- 使用commitizen的正确姿势
- Kotlin的正确使用“姿势”
- vuex使用的正确姿势
- MAC安装dmg后无法推出应用安装
- Linux 内核 Starting kernel ... 串口无输出问题归纳总结
- SVN 安装及使用
- java中数组的运用制作一个简单的购物程序
- PHPStorm10提高内存限制的方法
- ActivityLifecycleCallbacks的正确使用姿势
- 基于mysql的分页实现
- ui.router 源码解析
- oracle rac 和单机环境下各种不同
- myBatis配置文件中配置错误映射ID只返回最后一条数据
- iOS应用崩溃日志分析
- Unity3d面试6 DontDestroyOnLoad();PlayerPrefs;协同程序;游戏框架;Unity中播放视频;LOD技术
- 【Core Java Volume 6】集合算法--二分查找法
- IOS - UIBezierPath精讲