国产探花免费观看_亚洲丰满少妇自慰呻吟_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適用于執行一些簡短的后臺任務
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吉林省| 忻州市| 淮南市| 青田县| 呈贡县| 喀喇| 西畴县| 周口市| 尉氏县| 灌南县| 弥勒县| 云阳县| 道真| 内丘县| 石林| 六盘水市| 蓬溪县| 肇庆市| 武邑县| 西峡县| 建平县| 南部县| 洪洞县| 崇仁县| 石渠县| 铁岭市| 安新县| 南澳县| 高阳县| 天长市| 泸西县| 喜德县| 罗平县| 乐昌市| 四平市| 志丹县| 井陉县| 罗平县| 北流市| 临沧市| 牟定县|