2013-11-02 6 views
2

대화 상자를 만들었지 만 활동 워크 플로에 따라 onpause가 트리거되어야하지만 그렇지 않습니다. 무슨 일 이니? 안드로이드 작업 흐름 : http://developer.android.com/training/basics/activity-lifecycle/pausing.htmlOnPaused가 트리거되지 않았습니다.

@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

이 코드는 경고를 표시하지만 onPause가 발생하지 않습니다.

액티비티가 경고가 아닌 다른 액티비티에 의해 숨겨지면 호출됩니다. 경고는 여전히 동일한 활동에 속합니다.

0

활동의 API는 더 나은 정의가 있습니다

OnPause

활동이 배경으로 진행되는 활동주기의 일환으로 호출을하지만, (아직) 살해되지 않았습니다. onResume()에 대응합니다. 부분적으로 볼 수는 귀하의 링크에서 찾고 찾을 수 있습니다, 때문에 대화의 원인이되지 않습니다에 대한

의심이 :

시스템이 활동을 위해 onPause()를 호출

, 그것은 기술적으로 활동을 의미 여전히 부분적으로 표시되지만 사용자가 활동을 떠났다는 표시이며 곧 중지됨 상태가됩니다.

4

dialog은 실제로 활동을 일시 중지하지 않아야합니다. 이 문장에 혼란스러워 할 것입니다 .-

정상적인 앱 사용 중에는 전경 활동이 다른 활동 구성 요소에 의해 방해되어 활동이 일시 중지되는 경우가 있습니다. 예를 들어, 반투명 활동이 열릴 때, 이전의 활동은 대화 상자의 스타일, 새로운 activity 개방에 대해 이야기

아니지만 일시 중지 (예 : 대화 상자의 스타일 하나) 대화. 귀하의 대화 상자가 열 때마다 당신은 몇 가지 코드를 트리거 할 경우

그러나, 당신은 사용할 수 onShowListener .-

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