Android 监控Activity的生命周期
来源:互联网 发布:一起作业网刷学豆软件 编辑:程序博客网 时间:2024/05/18 03:56
Intro
在实际的开发中可能会有对Activity的生命周期进行监控的需求,如开源的图片加载库Glide就是根据Activity或Fragment的生命周期智能地开始或暂停图片加载任务,那么究竟是如何做到对他们的生命周期进行监控呢?
他们本身也并没有给我们提供类似于setOnLifecycleListener
这样的方法,下面本文就为了解决这个问题给出两种方法。
Solution 1
第一种方法是通过分析Glide库源码得到的。
具体的思路如下:
当一个Fragment和一个Activity绑定(attach)之后,他们就共享了生命周期(生命周期方法调用的时机一致),那么我们就可以通过监控Fragment的生命周期来达到对Activity生命周期监控的目的
在对Activity添加Fragment的时候,可以使得这个Fragment不占用Activity中的空间,不进行显示及对触摸事件的监听,类似于HTML中的
hidden
标签重写自己添加的Fragment的生命周期方法,实现监控
其中,添加一个占位的Fragment的具体方法是:
获取
FragmentManager
,通过Activity.getFragmentManager
或Activity.getSupportFragmentManager()
调用
FragmentManager.beginTransaction().add (Fragment fragment, String tag)
添加Fragment
,调用该方法默认的是containerViewId = 0
,该部分官方API解释如下:
containerViewId int: Optional identifier of the container this fragment is to be placed in. If 0, it will not be placed in a container.
这样就可以添加一个不显示,不获取焦点的Fragment
,有了它,我们就可以指定的Activity
生命周期进行监控了。
当然监控指定的Fragment
生命周期也是一样,因为Fragment
和attach的Activity
生命周期一致,所以首先可以通过获取该Fragment
依存的Activity
,使用getActivity()
函数,然后就和上面的方法一致进行监控Activity
的生命周期就可以指定的那个Fragment
的生命周期了。
使用这种方法虽然操作上面麻烦一定,但是具有针对性。
Solution 2
这一种方法是Application
类中给出的,需要API 14+。
具体方法很简单,就是通过: void registerActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks callback)
其中ActivityLifecycleCallbacks
的具体声明如下:
public static interface Application.ActivityLifecycleCallbacks { void onActivityCreated(Activity activity, Bundle savedInstanceState) void onActivityDestroyed(Activity activity) void onActivityPaused(Activity activity) void onActivityResumed(Activity activity) void onActivitySaveInstanceState(Activity activity, Bundle outState) void onActivityStarted(Activity activity) void onActivityStopped(Activity activity)}
这里已经可以监测绝大多数的生命周期的回调方法,这种方法大而全,对于应用中的每一个Activity
都会监测回调,多少会有一点浪费资源,还是需要根据具体的使用情况选择吧。
- Android 监控Activity的生命周期
- Android 监控应用中所有Activity 的生命周期
- Android activity的生命周期
- Android:Activity的生命周期
- Android Activity的生命周期
- Android Activity的生命周期
- Android Activity的生命周期
- Android activity的生命周期
- Android activity的生命周期
- Android activity的生命周期
- Android activity的生命周期
- Android Activity的生命周期
- Android activity的生命周期
- Android activity的生命周期
- android activity的生命周期
- Android activity的生命周期
- Android activity的生命周期
- Android activity的生命周期
- Macy's很久远,打折永不停?!
- Android学习之Android studio篇-Android Studio快捷键总结(mac)
- tomcat
- A - Lake Counting
- JAVA利用cmd命令行调用WINRAR解压及压缩
- Android 监控Activity的生命周期
- 关于Android APP入口的问题
- Java review--JVM
- python cmp()函数
- Linux下进入单用户模式,修改文件,密码
- topk 问题
- spring中StrSubstitutor更换表达式符号和忽略大小写StrLookup
- zzuli 1899: 985的最大和难题
- muduo网络库学习笔记(1):Timestamp类