日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android+版本升级的时候会清楚数据马,android主进程销毁了,线程会不会也销毁?...

發布時間:2024/9/27 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android+版本升级的时候会清楚数据马,android主进程销毁了,线程会不会也销毁?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android Activity 銷毀后子線程會不會被GC回收

曾想當然地認為頁面被finish之后線程會被android 虛擬機的垃圾回收機制回收掉。

于是用頁面跳轉做測試

測試代碼

結果有點意外,頁面被銷毀后定時器依然在執行。退出應用定時器還在執行。

UI線程被結束掉,UI線程里面的子線程并沒有被GC

問題來了,應該如何主動銷毀呢

1、通過線程

Hanlder是線程與Activity通信的橋梁,利用handler接收到任務線程,放到任務隊列里面派對執行。//調用該任務線程的run() 方法執行任務線程。Handler updateBarHandler =new handler();handler.post(Runnable Thread);//移除handler里的任務線程,調用線程的stop()方法,銷毀線程。handler.removecallbacks(Runnable Thread);

2、通過Timer

通過以下四種方法終止一個timer線程:

a)調用timer的cancle方法。可以從程序的任何地方調用此方法,甚至在一個timer task的run方法里;

b)讓timer線程成為一個daemon線程(可以在創建timer時使用new Timer(true)達到這個目地),這樣當程序只有daemon線程的時候,它就會自動終止運行;

c)當timer相關的所有task執行完畢以后,刪除所有此timer對象的引用(置成null),這樣timer線程也會終止;

d)調用System.exit方法,使整個程序(所有線程)終止。 Android基于Linux內核開發,其進程調度相關方面和Linux保持一致。主進程銷毀后,其中的線程會被內核執行銷毀流程,并回收資源,但是子進程并不會。因為線程使用的是主進程進程空間,進程空間銷毀意味著線程隨之銷毀;子進程擁有獨立進程空間,如果銷毀父進程,子進程會被初始進程接管成為繼父進程。

發表評論

總結

以上是生活随笔為你收集整理的android+版本升级的时候会清楚数据马,android主进程销毁了,线程会不会也销毁?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。