内存泄漏

  • 在AndroidDemos项目中,在测试事件传递机制的ActivityEventDiaspatch类中,由于自定义的View和ViewGroup在被点击了以后会有一长串的Toast来打印(事件传递的过程用Toast打印出来),这一系列的Toast打印完毕需要的事件挺长的,而在此期间,如果如果按了返回键,就将导致内存泄露,因为Toast持有了该Activity,所以该Activity无法被垃圾回收器回收:
image.png

解决方法:
使用getApplicationContext(),或者在自定义的Application类中:

public class MyApplication extends Application {
    private static Context context;
    @Override
    public void onCreate() {
        context = getApplicationContext();
    }
    public static Context getContext() {
        return context;
    }
  • BaseFragment持有一个静态的MyListener,ActivityNoteAndTools和ActivityComponentIntereact等只要包含了继承Basefragment的Fragment并且调用BaseFragment中的Mylistener方法,调用之后一旦退出activity,将会导致activity不能被回收:


    image.png
image.png

解决方法:
(1):将MyListener改为非静态
(2):


image.png

(3):传入Applicatin类中的全局context


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏大家都不陌生了,简单粗俗的讲,...
    宇宙只有巴掌大阅读 2,415评论 0 12
  • Android 内存泄漏总结 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏...
    _痞子阅读 1,654评论 0 8
  • Android 内存泄漏总结 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏...
    apkcore阅读 1,237评论 2 7
  • 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏大家都不陌生了,简单粗俗的讲,...
    DreamFish阅读 802评论 0 5
  • 阳光,很暖 刺人眼的光线不顾镜片反射 躲避不及 像被雷电劈中的小孩 那一朵不远处的云 在呵呵冷笑 饭菜,很暖 青绿...
    德斯阅读 299评论 0 2