0

所以我一直在做我的有關錯誤代碼的一些研究(稱爲犯一個異步任務的onPostExecute,有時會拋出IllegalStateException異常),我發現,當我開始我的異步任務從我的片段,並顯示進度對話框,我的活動調用他的onPause方法,它瀑布到我的片段中相應的onPause。我已經看過API,但在這裏卻找不到答案。爲什麼onPause在我的活動中被稱爲?這個活動不一定會進入後臺嗎?ProgressDialog在片段觸發主機活動的的onPause方法

回答

0

當您的活動進入後臺時,將調用onStop()方法。但是,當您顯示對話框時,該活動不在視圖的頂部,因此調用onPause()方法。

如果你想在你的onPause()方法中做一些你想要顯示對話框時不應該執行的操作,那麼你需要設置一個標誌並且只在該標誌爲真時才執行該代碼:

@Overrides 
public void onPause() { 
    super.onPause(); 
    if (myFlag) { 
     myMethod(); 
    } 
} 

您在顯示對話框和關閉對話框時切換標誌。

+0

如果我想在onResume之前做點什麼的話。正如我所提到的,由於我試圖在AsyncTask的onPostExecute中提交Fragment事務,我得到了IllegalStateException。有沒有合理的方式推遲提交,直到onResume? – user1371391