【译】什么导致了Context泄露:Handler&内部类
思考下面代码 1 public class SampleActivity extends Activity { 2 3 private final Handler mLeakyHandler = new Handler() { 4 @Override 5 public void handleMessage(Message msg) { 6 // ... 7 } 8 } 9 } 如果没有仔细观察,上面的代码可能导致严重的内存泄露。Android Lint会给出下面的警告: In Android, Handler classes should be static or leaks might occur. 但是到底是泄漏,如何发生的?让我们确定问题的根源,先写下我们所知道的 1、当一个Android应用程序第一次启动时,Android框架为应用程序的主线程创建一个Looper对象。一个Looper实现了一个简单的消息队列,在一个循环中处理Message对象。所有主要的应用程序框架事件(如活动生命周期方法调用,单击按钮,等等)都包含在Message对象,它被添加到Looper的消息队列然后一...