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

首頁 > 系統(tǒng) > Android > 正文

Android 開發(fā)中線程的分析

2019-12-12 03:10:51
字體:
供稿:網(wǎng)友

Android 開發(fā)中線程的分析

今天早上把公司給的任務做完了之后,突然就有點無聊,于是,把以前學的那些東西翻了翻,博客看了看,就看到一個關于線程的博客,有了很大的爭議,我也差點誤解了(感覺高大上~~~)。整體代碼差不多是這樣:

package sw.angel.thread; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.util.Log; public class ThreadDemo extends Activity {   private static final String TAG = "ThreadDemo";   private int count = 0;   private Handler mHandler = new Handler();   private Runnable mRunnable = new Runnable() {     public void run() {       //為了方便 查看,我們用Log打印出來       Log.e(TAG, Thread.currentThread().getName() + " " +count);       count++;       setTitle("" +count);       //每2秒執(zhí)行一次       mHandler.postDelayed(mRunnable, 2000);     }   };   @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);      //通過Handler啟動線程     mHandler.post(mRunnable);   }   protected void onDestroy() {     //將線程銷毀掉     //mHandler.removeCallbacks(mRunnable);     super.onDestroy();   } } 

所謂的爭議是什么呢?看了這塊代碼的大概意思,很多人會以為每2s新開一個線程執(zhí)行,但程序退出時,線程依舊是執(zhí)行的。博主就在onDestroy()中加上了removeCallbacks()。大概意思就是移除線程(銷毀)。

當然,首先指出的一點就是,這個demo是每2秒執(zhí)行一次Runable。相當于每2秒執(zhí)行一次主線程,用logcat打印出來。而不是每2秒新開一個線程。而無論你是否加上最后一句話,你會發(fā)現(xiàn)線程沒有停止過。相當于,隔2秒就執(zhí)行一次,無限循環(huán)下去。
為什么還會執(zhí)行?嗯,這是個問題。好了,我也不賣關子了。

退出的時候,程序相當于只是 finish 掉了,如果只是簡單的finish的話,該程序并沒有銷毀掉,主線程還繼續(xù)運行的,只是被前一個activity覆蓋而已。

有人說:Android應用本身就是一個進程,當我們退出應用時,這個進程就已經(jīng)銷毀了吧?

可是并沒有…

Android的特色: 當應用程序退出的時候進程資源并沒有銷毀,這樣做是為了下次啟動這個程序的更快…我想Android的思想是達到資源利用率的最大化,但這也有弊端,如果有應用需要系統(tǒng)資源,而系統(tǒng)資源又不夠,那么就得去銷毀掉其它資源,騰出地方來…

如果你想知道是不是真的沒有銷毀,你可以在onCreate判斷savedInstanceState是否等于NULL就可以知道是不是reinitialized了,或者在onBackPressed調(diào)用System.exit(0)真正退出進程。

android的特色之一:并不由用戶來銷毀activity,activity 的生命周期完全交給系統(tǒng)來管理 ,等系統(tǒng)在適當?shù)臅r候來回收資源。當你按下backspace鍵的時候,只是簡單的將位于堆棧里下一個activity彈出,將原來的activity壓棧而已,系統(tǒng)并保存原來的activity的一些歷史信息,并不銷毀,等你下次打開的時候,能夠很快的恢復。

android的特色之二:進程資源并沒被銷毀,Activity的主線程也是沒有退出的,因此Activity中的消息隊列會一致執(zhí)行下去,當再此啟動Activity的時候,又會實例化一Rrunnable,又會向此消息隊列中添加一個這個Runnable。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 正宁县| 南丰县| 庐江县| 铁岭县| 精河县| 济阳县| 甘孜| 资溪县| 深圳市| 措勤县| 宁安市| 上蔡县| 娄底市| 泗水县| 汤原县| 龙门县| 银川市| 枣庄市| 文山县| 平度市| 万州区| 建平县| 平武县| 鄂托克旗| 临邑县| 项城市| 冕宁县| 巧家县| 斗六市| 乌鲁木齐县| 茶陵县| 古丈县| 二连浩特市| 中阳县| 阳朔县| 泉州市| 凤冈县| 湘阴县| 阳东县| 星子县| 潞西市|