说下场景:
1,监控当前应用生命周期
2,调试应用,接手一个庞大的应用,快速知道当前是那个activity ,或者 fragment(会在另一篇中讲)
3,如果你正常开发SDK ,当时你又想获取当前的页面的activity
4,不修改源码即可在生命周期内添加自己的业务逻辑
当然你能难道app activity 生命周期,可以做很多业务,看我们自己怎么想了。
说了这么多, 今天要说的东西就是 Application registerActivityLifecycleCallbacks
看下方法签名:
public void registerActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks callback);
这方法能监控整个app 的activity 所以在application 中,看下 Application.ActivityLifecycleCallbacks
public interface ActivityLifecycleCallbacks {
void onActivityCreated(Activity var1, Bundle var2);
void onActivityStarted(Activity var1);
void onActivityResumed(Activity var1);
void onActivityPaused(Activity var1);
void onActivityStopped(Activity var1);
void onActivitySaveInstanceState(Activity var1, Bundle var2);
void onActivityDestroyed(Activity var1);
}
位于Applicaiton内部类 是一个接口,只要接触过的android 的小姐姐,小哥哥们,是不是看着这些函数相当熟悉 。是不是涵盖activity 重要的生命周期函数 下面对应对比一下。
| ActivityLifecycleCallbacks | |
| onActivityCreated | |
| onActivityStarted | |
| onActivityResumed | |
| onActivityPaused | |
| onActivityStopped | |
| onActivitySaveInstanceState | onSaveInstanceState |
| onActivityDestroyed | |
通过这个表已经说明了一切,既然我们拿到Activity生命周期,其实就可以说在activity 可以插入我们想做的一切逻辑了;
写一个简单的例子比如我们想在 一个activity onCreate()函数中插入一个弹窗,那么此时你又拿不到这个这个Activity 怎么办
第一步 我们肯定只要要操作那个activity ,但是具体的类名不知道怎么办 ,我们通过app 直接操作,看日志输出你就可以得到当前activity 类的全路径名称了。
第二步,我们既然能拿到activity 的类名,有知道了这个activity 的生命周期那就好办了。 剩下的工作就和平时弹窗一下,就是弹出dialog

 
这样就可以完成我们的需求了 ,睿智聪明的你我相信你已经明白怎么使用了!