我有一個Activity,ProgressDialog被AsyncTask更新。我正在使用onCreateDialog來設置對話框。 AsyncTask正在寫入SDCard。在正常情況下(旋轉,背景等),我沒有任何問題。防止onCreateDialog在進程被終止然後重新啓動時被調用
問題是如果進程被終止,對話框會被重新創建。因此,我最終打開了一個「新打開」的活動和一個根本不應該顯示的對話框,因爲沒有設置AsyncTask來更新它。
例如,當SD卡出現時,Reaper來到並殺死進程(沒有onDestroy,noPause,noResume被框架調用)。但是,當應用程序恢復時(例如,從最近使用的應用程序),沒有線索沒有AsyncTask,我不得不顯示對話框。我無法在onCreateDialog中返回null,因爲應用程序會崩潰。
如何防止進程死亡後重新創建對話框?
例子:
- Activity gets shown - onCreateDialog/onPrepareDialog show a progress dialog - AsyncTask gets started exporting to SD card => SD card gets unmounted - Process is killed - User selects the application from task switched - Activity gets created as new => Android calls onCreateDialog/onPrepareDialog with the previously shown dialog ID
通過該活動重新創建新的不存在的AsyncTask的時間,甚至有沒有SD卡。儘管如此,Android堅持要我展示一個對話框。
如何防止在創建過程中調用onCreate/PrepareDialog方法?或者唯一的選擇是調出一個錯誤對話框。