2016-11-05 72 views
0

在閱讀the example時,我注意到作者在MyActivity中創建了Runnable task。如果關閉活動,系統將無法垃圾收集它,因爲可運行包含對MyActivity的隱式引用,對吧?只要可運行的作品可用,活動就會一直存在。匿名runnable阻止Android垃圾收集其定義的活動

如果我錯了,請糾正我。

+1

這樣會讓你的' Runnable'靜態:它不會對你的活動隱含引用 – pskink

回答

1

似乎正確。

從你的鏈接(儘管談論的AsyncTask,而不是匿名的Runnable):

,如果它是一個內部類的活動/片段,它擁有的隱式引用到它,這是不好的做法,因爲Activity/Fragment可以在配置更改時被銷燬,但當工作線程處於活動狀態時,它們將保留在內存中; 如果它被宣佈爲獨立或靜態內部類您使用參考上下文來更新視圖,你應該總是檢查它是否爲空或不是

+0

順便說一句,感謝您的鏈接。我現在正在閱讀,這是非常好的。 – Fabricio