這裏的情景:的Android的AsyncTask回報屏幕旋轉後解僱一個ProgressDialog
- 帳戶登錄頁
- 點擊「登錄」觸發登錄的AsyncTask
- 要在網絡接入阻止用戶界面,一個ProgressDialog彈出
- 在返回時,ProgressDialog被駁回,用戶轉發
釷流程工作得很好。
這裏的問題:
- 同時的AsyncTask是記錄他/她在
目前用戶可以旋轉屏幕,該ProgressDialog是由類字段引用,並使用該革職指針並調用.dismiss()。
如果屏幕旋轉,但是,一切都崩潰。
可能因爲活動被重新創建?我懷疑是圍繞該字段引用的閉包指向一個無法訪問的對象。你需要什麼?
我該如何可靠和優雅地解決它?只需添加if (... != null)
支票?
更一般地,我必須承認,我不明白的「最佳實踐」的情況下適用這樣的:
- 活動A觸發的AsyncTask
- 用戶從活動A導航離開(後退按鈕?旋轉屏幕?onClick啓動一個意圖?)
當活動A不是最上面的一個時,AsyncTask返回它的onPostExecute()具有UI效果,注意:原始代表觀察者不再可用。
困惑*(注:我是一個初學者,所以一個完整的解釋會幫助我很多)
請解釋這對我的情況有何幫助。 – Robottinosino
這可能有效,但推理是錯誤的。 'android:configChanges'指定'Activity'通過onConfigurationChanged()來處理自己的配置更改。請參閱[android文檔](http://developer.android.com/guide/topics/manifest/activity-element.html),包括本說明 - 「注意:使用此屬性應避免使用,請閱讀處理運行時更改,以獲取有關如何正確處理由於配置更改而導致的重新啓動的更多信息。「 – iagreen
@iagreen,感謝您的糾正。將嘗試根據您的信息編輯推理。謝謝 –