亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中內存泄漏需要注意什么

發布時間:2021-08-19 14:46:27 來源:億速云 閱讀:127 作者:小新 欄目:移動開發

小編給大家分享一下Android中內存泄漏需要注意什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

1. 長生命周期對象持有 Activity

這基本是最常見的內存泄漏了,比如

內部類形式使用 Handler 同時發送延時消息,或者在 Handler 里面執行耗時任務,在任務還沒完成的時候 Activity 需要銷毀。這時候由于 Handler 持有 Activity 的強引用導致 Activity 無法被回收。

同理內部類形式的使用 AsyncTask 執行耗時任務也會導致內存泄漏的發生。

單例作為最長生命周期的對象,自然不應該持有 Activity 從而導致內存泄漏發生;

針對上面這種情況,基本不必多說了,不要使用內部類或者匿名內部類做這樣的處理就好了,實際上 IDE 也會彈出警告,我想大家應該還是都知道采用靜態內部類或者在銷毀頁面的時候使用相關方法移除處理的。

Activity 中匿名使用 Handler 實際上會導致 Handler 內部類持有外部類的引用,而 SendMessage() 的時候 Message 會持有 Handler,enqueueMessage 機制又會導致 MeassageQueue 持有 Message。所以當發送的是延遲消息那么 Message 并不會立即的遍歷出來處理而是阻塞到對應的 Message 觸發時間以后再處理。那么阻塞的這段時間中頁面銷毀一定會造成內存泄漏。

2. 各種注冊操作沒有對應的反注冊

這一點基本不必多說,相信大家剛剛開始學習廣播和 Service 的時候一定對此有所接觸,然后就是比如我們常用的第三方框架 EventBus 也是一樣的。平時使用的時候注意在對應的生命周期方法中進行反注冊。

3. Bitmap 使用完沒有注意 recycle()

Bitmap 作為大對象,在使用完畢一定要注意調用 recycle() 進行回收。TypedArray 、Cursor、各種流同理,一定要在最后調用自己的回收關閉方法處理。

4. WebView 使用不當

WebView 是非常常用的控件,但稍有不注意也會導致內存泄漏。內存泄漏的場景: 很多人使用 Webview 都喜歡采用布局引用方式, 這其實也是作為內存泄漏的一個隱患。當 Activity 被關閉時,Webview 不會被 GC 馬上回收,而是提交給事務,進行隊列處理,這樣就造成了內存泄漏, 導致 Webview 無法及時回收。

目前所知的比較安全的方案是:

在布局中動態添加 WebView。

采用下面的方法。

override fun onDestroy() {
  webView?.apply {
    val parent = parent
    if (parent is ViewGroup) {
      parent.removeView(this)
    }
    stopLoading()
    // 退出時調用此方法,移除綁定的服務,否則某些特定系統會報錯
    settings.javaScriptEnabled = false
    clearHistory()
    removeAllViews()
    destroy()
  }
}

5. 循環引用

循環引用導致內存泄漏比較少見,正常來講不會有人寫出 A 持有 B,B 持有 C,C 又持有A 這樣的代碼,不過總還是需要注意。

以上是“Android中內存泄漏需要注意什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

怀化市| 榆林市| 桂东县| 玉环县| 旌德县| 漳浦县| 河北省| 从江县| 玉林市| 陆丰市| 台州市| 集贤县| 司法| 广水市| 忻州市| 剑阁县| 蒲城县| 丰城市| 梅州市| 丹凤县| 深水埗区| 太仆寺旗| 吉首市| 阳新县| 蓬莱市| 平顶山市| 罗山县| 浙江省| 来安县| 逊克县| 天镇县| 容城县| 甘孜县| 南城县| 巴楚县| 凤山县| 东辽县| 遵义县| 望奎县| 织金县| 宜兴市|