【发布时间】:2013-02-28 14:29:36
【问题描述】:
我知道,如果您直接初始化 Handler 并在 Activity 中使用它,它将泄漏 Context(由 Alex Lockwood 提供),例如
public class SampleActivity extends Activity {
private final Handler mLeakyHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
/* ... */
}
}
}
所以我使用了以下方法
private static class StaticHandler extends Handler {
private final WeakReference<SampleActivity> mSampleAct;
private StaticHandler(SampleActivity act) {
mSampleAct = new WeakReference<SampleActivity>(
act);
}
}
然后我将它初始化如下
public class SampleActivity extends Activity {
private Handler myHandler = new StaticHandler(this) {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
processTask(msg.obj);
}
};
}
我想知道我的 Handler 即 myHandler 是否仍会泄漏 Context,我如何确定它不会泄漏?
【问题讨论】:
标签: android android-context android-handler