标签:
这坑容易埋, 却不容易发现.
比如启动一个页面, 需要用到一个单例的工具类Utils, 初始化Utils需要一个Context参数, 直接传入Activity.this.
然后这个单例的Utils就会一直持有Activity.this, 导致整个Acitivity不能被GC. 而如果代码中大量的使用Utils, 又不能确认到底谁最先初始化了Utils, 使得内存泄露成了灵异事件难以发现.
所以, 正确的使用方式是: activity.this.getApplicationContext();
getApplicationContext()事实上的生命周期和当前应用的生命周期一样, 当前应用在运行时, 它不需要也不应该被回收, 所以可以放心的使用.
Android 开发中踩过的坑之七:尽量避免使用Acitivity当做Context
标签:
原文地址:http://my.oschina.net/u/1393188/blog/488840