[Android基礎論]為何Activity退出之后,系統沒有調用onDestroy方法?


 

首先,問題是如何出現的?

晚上復查代碼,發現一個activity沒有調用自己的ondestroy方法
我表示非常的費解,於是我檢查了下代碼。
發現再finish代碼之后接了如下代碼
finish();
System.exit(0);//這就是罪魁禍首

為什么這樣寫會出現問題

System.exit(0);//
//看一下函數的原型
public static void exit (int code)
//
Added in API level 1
//大意可以解釋為,調用此方法,將會停止javaVM的執行,相當於殺死了程序
Causes the VM to stop running and the program to exit with the given exit status. If runFinalizersOnExit(boolean) has been previously invoked with a true argument, then all objects will be properly garbage-collected and finalized first.

既然我們理解了,調用exit之后,程序會被殺死,整個程序都被意外(人為)的殺死了,這是非正常情況,故,Activiy的生命周期也不會繼續執行了。很好的解釋了為什么ondestroy不會執行的疑問。

那么,問題是如何解決的?

將
system.exit(0);
這段代碼從finish()之后移除,結果程序生命周期,執行正常。問題得到解決。

附注:我覺得這句話並不是必須寫的,作為安卓開發者,應當使用finish來合理的控制app的界面,而生命周期交給系統去處理,這樣才能編寫出健壯的程序代碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM