我有代碼的活動如下爲什麼處理程序泄漏問題不會發生線程以外主線程
Handler handler = new Handler(){
@Override
public void dispatchMessage(Message msg) {
super.dispatchMessage(msg);
}
};
的Android工作室皮棉:
處理器參考泄漏
由於此Handler被聲明爲內部類,因此可能會阻止外部類被垃圾收集。 如果處理程序對主線程以外的線程使用Looper或MessageQueue,則不存在問題。如果處理程序使用主線程的Looper或MessageQueue,則需要修復Handler聲明,如下所示:將Handler聲明爲靜態類;在外部類中,實例化WeakReference到外部類並在實例化Handler時將此對象傳遞給Handler;使用WeakReference對象創建對外部類成員的所有引用。
我知道Handler引用泄漏,因爲它擁有強大的活動引用,並且活動不能被垃圾回收收集,但爲什麼Handler泄漏問題不會發生在主線程以外的線程中?主線程生命週期只要應用程序很重要?