Android 监听各个Acitivity的生命周期
2016-03-21 15:23
387 查看
在Application注册对该应用Activity的监听
两个Activity
打开应用MainActivity然后进入SecondActivity,生命周期的监听打印如下:
可以在通过监听各个Activity做一些统计性的工作,比如多少个Activity处于resume状态,统计Acitivity使用情况等。再比如每个Activity在每个onCreate时候将其放进集合,在要退出程序的时候,通过扫描集合,挨个finish()
square leakcanary工具即使用onActivityDestroyed回调+weakRefence+refrenceQueue判断Activity有没有泄露。(PS:这个是听别人说的,想想确实能做到)
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 onActivityCreated 03-21 15:09:53.245: I/System.out(4289): ======>>>>>>com.example.test.MainActivity onActivityStarted 03-21 15:09:53.245: I/System.out(4289): ======>>>>>>com.example.test.MainActivity onActivityResumed 03-21 15:09:53.275: I/System.out(4289): ======>>>>>>com.example.test.MainActivity onActivityPaused 03-21 15:09:53.315: I/System.out(4289): ======>>>>>>com.example.test.SecondActivity onActivityCreated 03-21 15:09:53.315: I/System.out(4289): ======>>>>>>com.example.test.SecondActivity onActivityStarted 03-21 15:09:53.315: I/System.out(4289): ======>>>>>>com.example.test.SecondActivity onActivityResumed 03-21 15:09:53.590: I/System.out(4289): ======>>>>>>com.example.test.MainActivity onActivitySaveInstanceState 03-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:这个是听别人说的,想想确实能做到)
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories