记关于内存泄漏的理解与学习
程序员文章站
2022-05-06 12:34:55
...
内存泄漏工具:LeakCancary,在app的build.gradle下引入,除此之外该版本不需要添加其他代码
使用文档:https://square.github.io/leakcanary/
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.0-beta-3'
目前我常见的内存泄漏
1、handler隐性持有activity
2、Runnable隐性持有activity
3、Thread隐性持有activity
4、Toast.make( context,“弹出内容”,Toast.LENGTH_SHORT).show;
5、封装类的调用,持有 context / activity
6、静态变量持有context / activity
解决方案(上下一一对应)
- 1:MyHandler继承Handler 对传入值进行弱引用,myHandler置静态,在onDestory()中记得手动销毁myHandler
- 2,3:写一个内部静态类继承Thread / Runnable进行使用
- 4,5-a: 如果只需要用到context,传入context.getApplicationContext()即可
- 5-b: 一定需要activity而非context,传入activity后,在封装类中对activity采用弱引用
WeakReferencr<Activity> reference = new WeakReferencr<Activity>(传入的activity);
Activity activity = reference.get();
下一篇: python中字符串内置函数的用法总结