Я знаю, что если вы инициализируете Handler
напрямую и используете его в Activity
, произойдет утечка Context
(любезно предоставлено Алекс Локвуд), например
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
, как я могу быть уверен, что это не так?