国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

非靜態內部類、非靜態匿名內部類會持有外部對象的引用

2019-11-09 13:50:52
字體:
來源:轉載
供稿:網友
非靜態內部類、非靜態匿名內部類會持有外部對象的引用,靜態內部類、靜態匿名內部類則不會持有外部對象的引用非靜態匿名內部類非靜態匿名內部類為何會持有外部類的引用呢?靜態匿名內部類不持有外部對象的引用非靜態態內部類里面不允許有靜態方法(因為非靜態內部類方法的調用必須依賴外部對象的創建)。The method test cannot be declared static; static methods can only be declared in a static or top level type外部類:外部類不持有MainActivity的引用在Android中,長時間運行的任務和Acyivity生命周期進行協調會有點困難,如果你不加以小心的話會導致內存泄漏。關于如何處理這個棘手的問題,下面有幾個基本的技巧供參考      1、使用靜態內部類/匿名類,不要使用非靜態內部類/匿名類.非靜態內部類/匿名類會隱式的持有外部類的引用,外部類就有可能發生泄漏。而靜態內部類/匿名類不會隱式的持有外部類引用,外部類會以正常的方式回收,如果你想在靜態內部類/匿名類中使用外部類的屬性或方法時,可以顯示的持有一個弱引用。     2、不要以為java永遠會幫你清理回收正在運行的threads.在上面的代碼中,我們很容易誤以為當Activity結束銷毀時會幫我們把正在運行的thread也結束回收掉,但事情永遠不是這樣的!Java threads會一直存在,只有當線程運行完成或被殺死掉,線程才會被回收。所以我們應該養成為thread設置退出邏輯條件的習慣。     3、適當的考慮下是否應該使用線程.Android應用框架設計了許多的類來簡化執行后臺任務,我們可以使用與Activity生命周期相關聯的Loaders來執行簡短的后臺查詢任務。如果一個線程不依賴與Activity,我們還可以使用Service來執行后臺任務,然后用BroadcastReceiver來向Activity報告結果。另外需要注意的是本文討論的thread同樣使用于AsyncTasks,AsyncTask同樣也是由線程來實現,只不過使用了Java5.0新增并發包中的功能,但同時需要注意的是根據官方文檔所說,AsyncTask適用于執行一些簡短的后臺任務
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 崇阳县| 汾阳市| 晋中市| 赫章县| 日照市| 临邑县| 江永县| 左贡县| 铁岭县| 定襄县| 台中市| 永善县| 伊川县| 东光县| 东乌| 白玉县| 福鼎市| 信阳市| 建瓯市| 巴彦淖尔市| 集安市| 綦江县| 青冈县| 淳化县| 出国| 海城市| 抚远县| 成武县| 册亨县| 雷州市| 永兴县| 铜鼓县| 北流市| 鲜城| 桓台县| 武山县| 汝阳县| 水城县| 彩票| 新巴尔虎左旗| 青海省|