最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Kotlin中的handler如何避免內(nèi)存泄漏詳解

 更新時間:2017年12月17日 08:44:09   作者:Donkor-  
Handler,我們已經(jīng)相當熟悉了,而且經(jīng)常用得不亦樂乎,但就是因為太熟悉了,才會偶爾被它反捅一刀,血流不止,下面這篇文章主要給大家介紹了關于Kotlin中handler如何避免內(nèi)存泄漏的相關資料,需要的朋友可以參考下。

前言:

哲學老師說,看待事物無非是了解它是什么,為什么,怎么做

所以,首先,我們先了解一下什么是“內(nèi)存泄漏”

摘自百度的一段話:用動態(tài)存儲分配函數(shù)動態(tài)開辟的空間,在使用完畢后未釋放,結果導致一直占據(jù)該內(nèi)存單元。直到程序結束。

是不是有點拗口,換一種說法,有天你去一家飯店吃飯,有個胖子吃完飯了,卻霸占著一張桌子不走,然而現(xiàn)在一堆人等著吃飯,結果那死胖子等到飯店打烊了才離開。

在這個例子中,飯店的桌子就好比內(nèi)存空間,那個胖子就是一個函數(shù),吃飯就是所執(zhí)行的事件。

這么說是不是好理解多了,現(xiàn)在,我們要做的就是趕走這個死胖子。

Handler在Android開發(fā)中經(jīng)常使用,一不小心就會陷入內(nèi)存泄漏的問題,最近在開發(fā)一款Kotlin軟件,針對Handler內(nèi)存泄漏的問題做出了解決方案

問題分析:

在finish()的時候,Message還沒有被處理,Message持有Handler, Handler持有Activity,這樣阻止了GC對Acivity的回收,就發(fā)生了內(nèi)存泄露。正確的寫法應該是使用顯形的引用,靜態(tài)內(nèi)部類與 外部類。使用弱引用WeakReference。 最后在Activity調(diào)用onDestroy()的時候要取消掉該Handler對象的Message和Runnable

核心代碼:

 private class MyHandler(activity: thisActivity) : Handler() {
  private val mActivity: WeakReference<thisActivity> = WeakReference(activity)
  override fun handleMessage(msg: Message) {
   if (mActivity.get() == null) {
    return
   }
   val activity = mActivity.get()
   when (msg.what) {
    0-> {
    }
    else -> {
    }
   }
  }
 }
 override fun onDestroy() {
  // Remove all Runnable and Message.
  MyHandler(this).removeCallbacksAndMessages(null)
  super.onDestroy()
 }

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • android使用AsyncTask實現(xiàn)多線程下載實例

    android使用AsyncTask實現(xiàn)多線程下載實例

    這篇文章主要介紹了android使用AsyncTask實現(xiàn)多線程下載實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Android開發(fā)之線程通信詳解

    Android開發(fā)之線程通信詳解

    這篇文章主要為大家詳細介紹了Android開發(fā)中線程間通信的相關資料,文中的示例代碼講解詳細,對我們學習Android有一定的幫助,?需要的可以了解一下
    2022-11-11
  • android 瀏覽器之多窗口方案詳解

    android 瀏覽器之多窗口方案詳解

    android 瀏覽器之多窗口方案詳細介紹,需要的朋友可以過來參考下
    2013-07-07
  • Kotlin開發(fā)筆記之委托屬性與區(qū)間(譯)

    Kotlin開發(fā)筆記之委托屬性與區(qū)間(譯)

    最近在學習kotlin,發(fā)現(xiàn)了一些比較重要的知識點,所以下面這篇文章主要給大家介紹了關于Kotlin開發(fā)筆記之委托屬性與區(qū)間的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-12-12
  • Android?Studio?Electric?Eel支持手機投屏

    Android?Studio?Electric?Eel支持手機投屏

    這篇文章主要為大家介紹了Android?Studio?Electric?Eel支持手機投屏功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • 基于Android實現(xiàn)一個常用的布局吸頂效果

    基于Android實現(xiàn)一個常用的布局吸頂效果

    這篇文章給大家介紹一個布局吸頂效果,一般出現(xiàn)在內(nèi)容較長頁面還嵌套著分類頁面的情況,比如電商的詳情頁嵌套分類,在頁面滑動到tab的時候我們希望tab還能保留在頁面頂部而不被頂上去,文中有詳細的代碼示例,需要的朋友可以參考下
    2023-09-09
  • 詳細解讀Android系統(tǒng)中的application標簽

    詳細解讀Android系統(tǒng)中的application標簽

    這篇文章主要介紹了Android系統(tǒng)中的application標簽,以application來聲明App是Android入門學習中的基礎知識,需要的朋友可以參考下
    2016-04-04
  • Android開發(fā)改變字體顏色方法

    Android開發(fā)改變字體顏色方法

    用以下方法基本上可以解決大多數(shù)字體顏色設置問題,先發(fā)一篇,后續(xù)繼續(xù)發(fā)一篇高級的,通過用戶選擇的方式,改變字體顏色。
    2015-05-05
  • Android 應用更換皮膚實現(xiàn)方法

    Android 應用更換皮膚實現(xiàn)方法

    本文主要介紹Android 應用更換皮膚,Android應用如果想更換皮膚這里幫大家整理了相關資料,有需要的小伙伴可以參考下
    2016-08-08
  • Android關于獲取時間的記錄(小結)

    Android關于獲取時間的記錄(小結)

    這篇文章主要介紹了Android關于獲取時間的記錄(小結),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04

最新評論

灵丘县| 吴江市| 固镇县| 锡林郭勒盟| 淮南市| 宜州市| 马关县| 雅江县| 梁平县| 泰州市| 永丰县| 威远县| 江川县| 平昌县| 延庆县| 根河市| 龙陵县| 玉环县| 始兴县| 云阳县| 莫力| 江华| 商水县| 乌拉特中旗| 遵化市| 东山县| 枝江市| 潼关县| 睢宁县| 太白县| 合肥市| 云霄县| 邢台县| 兴安盟| 兴山县| 泰来县| 华安县| 清徐县| 剑阁县| 新蔡县| 固阳县|