2012-07-04 51 views
0

我觀察過幾次,在電話被鎖定一段時間後再次解鎖對話框再次出現,然後解鎖。這種情況偶爾發生,並非總是如此。解鎖後的對話框在屏幕解鎖後再次出現

,我使用的代碼是非常簡單的:

showDialog(DIALOG_LOADING); 
new AsyncTask<Void, Void, PhotoList>(){ 
    @Override 
    protected PhotoList doInBackground(Void... params) { 
     // load and return data 
    } 

    protected void onPostExecute(PhotoList result) { 
     dismissDialog(DIALOG_LOADING); 
     // display data 
    } 
}.execute(); 
.... 
@Override 
protected Dialog onCreateDialog(int id) { 
    Log.d(TAG, "onCreateDialog"); 
    switch(id){ 
    case DIALOG_LOADING: 
     return ProgressDialog.show(this, null, "Loading. Please wait...", true); 
    default: 
     return super.onCreateDialog(id); 
    } 
} 

現在,發生的事情是:在對話框中顯示,數據被加載並在對話框被駁回。到目前爲止這麼好,只是在電話被鎖定一段時間後對話框再次出現,我再次解鎖。

任何想法爲什麼會發生?

感謝
西蒙

回答

0

我不能說100%的確定性,但我認爲這與調試有關。它從來沒有出現過我編譯用於生產的應用程序。

0

我懷疑你把showDialog(DIALOG_LOADING);onResume()回調。這是最有可能的原因,對話框顯示爲onResume()將在屏幕解鎖後被調用。

+0

不,它在onCreate(),它屬於... – SimonSays

+0

然後我不能確定屏幕解鎖後會調用什麼,因爲某些製造商可能會改變行爲。您可以嘗試在showDialog()之前添加調試代碼,以查看是否在屏幕解鎖後調用它。 –