Android(安卓)监听各个Acitivity的生命周期
16lz
2022-03-30
在Application注册对该应用Activity的监听
package com.example.test.app;import android.annotation.SuppressLint;import android.app.Activity;import android.app.Application;import android.os.Bundle;public class MyApplication extends Application{ @SuppressLint("NewApi") @Override public void onCreate() { super.onCreate(); registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { @Override public void onActivityStopped(Activity activity) { System.out.println("======>>>>>>" + activity.getClass().getCanonicalName() + " onActivityStopped"); } @Override public void onActivityStarted(Activity activity) { System.out.println("======>>>>>>" + activity.getClass().getCanonicalName() + " onActivityStarted"); } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { System.out.println("======>>>>>>" + activity.getClass().getCanonicalName() + " onActivitySaveInstanceState"); } @Override public void onActivityResumed(Activity activity) { System.out.println("======>>>>>>" + activity.getClass().getCanonicalName() + " onActivityResumed"); } @Override public void onActivityPaused(Activity activity) { System.out.println("======>>>>>>" + activity.getClass().getCanonicalName() + " onActivityPaused"); } @Override public void onActivityDestroyed(Activity activity) { System.out.println("======>>>>>>" + activity.getClass().getCanonicalName() + " onActivityDestroyed"); } @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { System.out.println("======>>>>>>" + activity.getClass().getCanonicalName() + " onActivityCreated"); } }); }}
两个Activity
package com.example.test;import android.app.Activity;import android.content.Intent;import android.os.Bundle;public class MainActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); startActivity(new Intent(this, SecondActivity.class)); }}
package com.example.test;import android.app.Activity;import android.os.Bundle;public class SecondActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); }}
打开应用MainActivity然后进入SecondActivity,生命周期的监听打印如下:
03-21 15:09:53.225: I/System.out(4289): ======>>>>>>com.example.test.MainActivity onActivityCreated03-21 15:09:53.245: I/System.out(4289): ======>>>>>>com.example.test.MainActivity onActivityStarted03-21 15:09:53.245: I/System.out(4289): ======>>>>>>com.example.test.MainActivity onActivityResumed03-21 15:09:53.275: I/System.out(4289): ======>>>>>>com.example.test.MainActivity onActivityPaused03-21 15:09:53.315: I/System.out(4289): ======>>>>>>com.example.test.SecondActivity onActivityCreated03-21 15:09:53.315: I/System.out(4289): ======>>>>>>com.example.test.SecondActivity onActivityStarted03-21 15:09:53.315: I/System.out(4289): ======>>>>>>com.example.test.SecondActivity onActivityResumed03-21 15:09:53.590: I/System.out(4289): ======>>>>>>com.example.test.MainActivity onActivitySaveInstanceState03-21 15:09:53.590: I/System.out(4289): ======>>>>>>com.example.test.MainActivity onActivityStopped
可以在通过监听各个Activity做一些统计性的工作,比如多少个Activity处于resume状态,统计Acitivity使用情况等。再比如每个Activity在每个onCreate时候将其放进集合,在要退出程序的时候,通过扫描集合,挨个finish()
square leakcanary工具即使用onActivityDestroyed回调+weakRefence+refrenceQueue判断Activity有没有泄露。(PS:这个是听别人说的,想想确实能做到)
更多相关文章
- Android完美禁用Home键
- android短信窃听器,娱乐版,效果可以实现
- android > 手机MIC,听筒音量监听
- Android(安卓)3D 旋转的三角形(三)
- Android中CheckBox复选框操作
- Android中自定义Dialog常用的两种方式
- android 监听短信和来电
- Android电池状态监听实例1(下)
- Android——布局的一些动态设置