在Android下,當程式結束進行finish()或進行onDestroy()時,通常該程式的process是不會結束掉的,
例如寫一個讀取GPS座標的程式,當離開程式後上方的GPS圖示還是會繼續讀取座標,這樣子情況往往會造成電力無謂的消耗。
為避免類似情況出現,建議在程式結束生命週期內採用:
android.os.Process.killProcess(android.os.Process.myPid());
或者
System.exit(0)
前者為Android Dalvik VM的使用方式;後者則是標準Java結束方式。既然使用的是Android當然建議使用前者囉。
下圖是參考,注意的部分如果程式是在Activity與Activity間切換時建議要多加判斷;以判斷是離開程式或切換程式,以免進行Activity切換時結束本身process導致程式強制結束。
切換Activity不是最多跑到onStop?
回覆刪除為何要在onDestroy多加判斷?
舉例....
回覆刪除private void openOtherActivity() {
/* new一個Intent物件,並指定要啟動的class */
Intent intent = new Intent();
intent.setClass(MainActivity.this, OtherActivity.class);
/* 呼叫一個新的Activity */
startActivity(intent);
/* 關閉原本的Activity */
MainActivity.this.finish();
}
如果切換時要結束掉原本Activity,通常我們會使用finish()來結束這個Activity,這時生命週期就會進入到onDestroy了.....
至於為何進行切換時要結束掉原本的Activity就得 "視情況" 了,通常如果沒有進行關閉的話你按返回鍵就會回到原本的Activity,
也就是說如果是MainActivity --> OtherActivity --> MainActivity 這時程式是會跑兩個MainActivity按返回鍵兩次才會離開程式的。
如果是MainActivity --> OtherActivity --> 按返回鍵離開,這時在第一個MainActivity就要如同上述例子一樣下finish()了。