2013-11-02 81 views
2

我創建了一個對話框,但根據活動工作流它應該觸發onpause,但它不會。出了什麼問題? Android的活動流程:http://developer.android.com/training/basics/activity-lifecycle/pausing.htmlOnPaused not triggered

@Override 
    public boolean onOptionsItemSelected(MenuItem item) 
    { 
     //stopAutoCall = true; 
     // Handle item selection 
     // if (item.getTitle().toString().toLowerCase() == "settings") 
     // { 
     AlertDialog.Builder alert = new AlertDialog.Builder(this); 

     alert.setTitle("Number"); 
     alert.setMessage("Put here the number in to call"); 

     alert.show(); 
    } 

    @Override 
    public void onPause() 
    { 
     super.onPause(); 

     stopAutoCall = true; 
    } 

回答

0

此代碼將只顯示警報,但它不會造成。

將在活動被另一活動隱藏而不是警報時被調用。警報仍屬於同一活動。

0

活動的API有一個更好的定義:

OnPause

古稱當活動進入後臺活動的生命週期的一部分,但還沒有(還)被殺害。與onResume()的對應部分。

您對部分可見不造成的,因爲一個對話框,看着你的鏈接,你可以找到的疑惑:

當系統調用的onPause()爲您的活動,這在技術上意味着你的活動仍然部分可見,但通常表明用戶正在離開活動並且很快會進入停止狀態。

4

A dialog實際上不應該暫停活動。你可能會被這句話搞糊塗了.-

在正常的應用程序使用過程中,前臺活動有時被導致活動暫停的其他可視組件阻塞。例如,一個半透明的活動打開時(例如,一個在對話框的風格),以前的活動暫停

其中談到了新activity開放,在對話框的風格,而不是對話。

但是,如果要觸發一些代碼,只要打開你的對話框,你可以使用onShowListener .-

alert.setOnShowListener(new DialogInterface.OnShowListener() {  
    @Override 
    public void onShow(DialogInterface dialog) { 
     stopAutoCall = true; 
    } 
});