[英]Android onDestroy() method not working as expected
我使用onDestroy()
方法,我的代碼沒有完成:
@Override
public void onDestroy() {
super.onDestroy();
for (int i = 0 ; i < 10; i++) {
Toast.makeText(this, "Destroy " + i, Toast.LENGTH_SHORT).show();
}
}
for
循環在索引 2 處停止。為什么循環沒有結束?
首先, 文檔說onDestroy()
方法:
不應該被用來做那些在過程消失后仍然存在的事情。
和:
此方法通常用於釋放與活動關聯的線程等資源
同樣在Activity 文檔的開頭有一個注釋,即onDestroy()
和onStop()
是可killable
:
標記為可終止的方法,在該方法返回后,承載該活動的進程可能隨時被系統終止,而無需執行其他代碼行。
並且建議使用onPause()
方法而不是那些可殺死的方法。
因此,顯然onDestroy()
函數有一些 android 內部超時,如果沒有發生太長時間,它可能會控制它,如果它發生了,那么它可能會終止執行。 這是我的猜測。
根據文檔中的內容,我將避免使用此方法來執行您在此處執行的操作,而是嘗試使用onPause()
方法。
如果代碼僅在應用程序完成時才執行,則使用isFinishing()
方法來檢查它。 文檔推薦這種方法:
檢查此活動是否正在完成,因為您對其調用了 finish() 或其他人要求它完成。 這通常用於 onPause() 來確定活動是簡單地暫停還是完全結束。
@sweak 的回答幾乎解釋了為什么你不應該這樣做。 但如果你熱衷於這樣做。 你可以像下面那樣完成 for 循環並給出所有 10 個 toast 的輸出。
@Override
public void onDestroy() {
for (int i = 0 ; i < 10; i++) {
Toast.makeText(this, "Destroy " + i, Toast.LENGTH_SHORT).show();
}
super.onDestroy();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.