LeakCanary测试app内存泄露+registerActivityLifecycleCallbacks管理Activity的生命周期
来源:互联网 发布:淘宝宝贝名称规则 编辑:程序博客网 时间:2024/06/16 04:59
public class MyApplication extends Application { private String tag = "MyApplication"; private static Stack<Activity> activityStack; //检测内存泄露 private RefWatcher refWatcher; @Override public void onCreate() { super.onCreate(); //检测内存泄露 if (LeakCanary.isInAnalyzerProcess(this)) { return; } refWatcher = LeakCanary.install(this); if (activityStack == null) { activityStack = new Stack<>(); } addActivityLifeCallBack(); } private void addActivityLifeCallBack() { registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() { @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { Log.i(tag, "----------------onActivityCreated-----------------" + activity.toString()); activityStack.add(activity); Log.i(tag, "onActivityCreated->activityStack:" + activityStack.size()); refWatcher.watch(activity); } @Override public void onActivityStarted(Activity activity) { Log.i(tag, "----------------onActivityStarted-----------------" + activity.toString()); } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { Log.i(tag, "----------------onActivitySaveInstanceState-----------------" + activity.toString()); } @Override public void onActivityResumed(Activity activity) { Log.i(tag, "----------------onActivityResumed-----------------" + activity.toString()); } @Override public void onActivityPaused(Activity activity) { Log.i(tag, "----------------onActivityPaused-----------------" + activity.toString()); } @Override public void onActivityStopped(Activity activity) { Log.i(tag, "----------------onActivityStopped-----------------" + activity.toString()); } @Override public void onActivityDestroyed(Activity activity) { Log.i(tag, "----------------onActivityDestroyed-----------------" + activity.toString()); activityStack.remove(activity); Log.i(tag, "onActivityDestroyed->activityStack:" + activityStack.size()); } }); } /** * 关闭所有的Activity */ public void finishAll() { Log.i(tag, "----------------finishAll-----------------" + activityStack.size()); for (int i = 0; i < activityStack.size(); i++) { if (null != activityStack.get(i)) { activityStack.get(i).finish(); } } activityStack.clear(); } /** * 获取当前的activity 的名字 */ public String getCurrentActivityName(Activity activity) { String contextString = activity.toString(); return contextString.substring(contextString.lastIndexOf(".") + 1, contextString.indexOf("@")); } /** * 获取当前的activity */ public Activity getCurrentActivity() { Log.i(tag, "----------------getCurrentActivity-----------------" + activityStack.size()); if (activityStack.size() > 0) { Log.i(tag, "getCurrentActivity!=NULL"); return activityStack.lastElement(); } else { Log.i(tag, "getCurrentActivity==NULL"); return null; } }
阅读全文
0 0
- LeakCanary测试app内存泄露+registerActivityLifecycleCallbacks管理Activity的生命周期
- app整个应用生命周期管理ActivityLifecycleCallbacks,registerActivityLifecycleCallbacks
- 使用registerActivityLifecycleCallbacks实现整个app所有activity生命周期的监听和处理
- LeakCanary:检测你APP所有的内存泄露
- 检测App内存泄露--LeakCanary工具
- LeakCanary:检测所有的内存泄露
- LeakCanary:检测所有的内存泄露
- 内存泄露检测工具LeakCanary
- LeakCanary: 查找内存泄露
- 内存泄露检测工具LeakCanary
- [leakcanary]内存泄露检测
- LeakCanary检查内存泄露
- LeakCanary检查内存泄露
- LeakCanary 检测内存泄露
- 接入LeakCanary检测内存泄露
- Android 内存泄露检测工具 LeakCanary
- Android内存泄露检测(LeakCanary)
- LeakCanary-Android内存泄露检测
- 生成对抗网络(GAN)的理论与应用完整入门介绍
- 考研,加油,祝福你们
- phantomjs爬虫在docker下不能正常运行的问题
- utils/yum_onlydownload.sh
- 反汇编【for循环】
- LeakCanary测试app内存泄露+registerActivityLifecycleCallbacks管理Activity的生命周期
- PackageManager 分析(1)
- 数据结构学习之链表
- ionic3 调用本地相册并上传图片
- Python 数据处理实践(1)--遍历文件和map()函数
- Ubuntu配置开发环境
- 为什么要重写hashcode() 方法
- 如何生成RDF数据?
- Android开发——Intent中的各种FLAG