美文网首页
内存泄漏

内存泄漏

作者: 指尖流逝的青春 | 来源:发表于2017-09-10 10:41 被阅读0次
  • 在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

相关文章

网友评论

      本文标题:内存泄漏

      本文链接:https://www.haomeiwen.com/subject/yuyzjxtx.html