2013-12-09 59 views
2

我在應用程序中創建臨時文件。當應用程序被銷燬時,我需要刪除該文件。目前我在onDestroy()方法中調用這個deleteTempFile()方法。但正如我在開發人員指南中發現的那樣,它不保證在應用程序被殺時被調用。什麼應該是實現這一目標的正確方法?onDestroy()不會一直調用

請注意,當我們按下home按鈕時,不會調用onDestroy,然後再次長時間按下以獲取任務管理器並輕掃應用程序即可殺死它。

+0

很難確定應用程序銷燬狀態。當應用程序進入後臺/前臺時,是否適合您刪除/恢復文件? –

+0

問題是當我使用視頻播放器播放該臨時文件時,應用程序會轉到後臺。我不應該刪除它。 – Shashika

回答

1

嘗試在onSaveBundleInstances做(捆綁outBundle)

+0

onSaveBundleInstances在活動暫停時調用。類似於onPause。但我需要臨時文件,直到應用程序被殺死。它實際上是一個視頻文件。所以在我的應用程序中有一個功能可以使用視頻播放器播放。但即使當我們在保存的情況下啓動這些視頻播放器,onPause也會被調用。 – Shashika

+1

問題是,你可以保證調用onDestroy(),所以onSaveBundleInstances()是最安全的事件,否則你將不得不找出一些解決辦法。 :) –

+0

似乎我可能不得不使用onSaveBundleInstances來實現這一點。但必須區分很多回電我得到 – Shashika

-1
@Override 
public void onPause() { 
    super.onPause() 
    if (isFinishing()) 
     deleteTempFile(); 
} 
+2

感謝您的回答。但在我的情況下,我先按Home鍵。所以我用isFinishing()= false進行onPause。然後,當我滑動殺死應用程序,我不會再次停下來。 – Shashika

0

的onDestroy()將無法工作所有的時間所以另一種方法是,你應該使用onBackPressed()方法deleteTempFile()。

+1

我沒有使用後退鍵殺死應用程序。我按主頁按鈕,然後長按再次獲取任務管理器和刷卡應用程序來殺死它。這是場景。 – Shashika

相關問題