簡體   English   中英

Android onDestroy() 方法未按預期工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM