2012-06-02 4 views
2

대화를 주제로 한 활동이 있습니다. 대화 상자가 표시되고 홈 버튼을 누른 다음 작업 관리자를 사용하여 앱을 다시 시작하면 해당 대화 활동은 앱이 시작되는 활동이되고 다른 활동은 되돌릴 수없는 것으로 나타났습니다. 에. 즉, 대화 상자 활동을로드 할 때 실행 중이던 활동이 실행되고 있지 않습니다. 따라서 대화 상자를 바탕으로 한이 활동을 바탕 화면 위로 가져 가면됩니다. 그건 의미가 있습니다.시작하고 싶지 않은 Android 활동

Android 활동 라이프 사이클을 살펴보면 OS는 마지막 활동을 기억하고 다시 시작하려고 시도합니다. 따라서 모든 활동 (onResume, onRestart 등)에서 on * 메서드를 만들었습니다. 내가 찾은 것은 정말로 수수께끼였다. 내가 작업 관리자에서 응용 프로그램을 다시 시작하면 다음과 같은 방법이 호출됩니다

onCreate() 
onResume() 
onStop() 
onDestroy() 

내가 정말

왜 이동 중지 및들의 OnDestroy가 바로 전화지고
onRestart() 
onCreate() 
onResume() 
  • 를 기다리고 있었다 어디? 왜 onDestroy가 호출 되더라도 대화 상자는 여전히 표시됩니까?
  • 어떻게하면이 대화 상자에서만 절대로 시작되지 않도록이 응용 프로그램을 구성 할 수 있습니까? 나는 똑같은 "부모"활동과 그 위에있는 대화창 (다시 떠난 것처럼)으로 다시 시작하는 응용 프로그램과 함께, 또는 부모 활동이 실행 중이고 대화 상자가 닫히면 문제가 없습니다.

답변

1

이 경우 Dialog 코드에서 finish()을 사용해야합니다. 사용자가 앱에서 전환 할 때 (홈 버튼으로 이동하여 전화를받는 등의 일이 발생할 수 있음)이 작업을 수행하려고합니다. 이 경우 대화 상자의 onStop()finish()을 호출해야합니다. 현재 액티비티를 완료하라는 호출은 스택에서 제거하여 본질적으로 설명하는 동작을 얻습니다.

+0

내가 제안한 것을 시도하고 onStop()에서 finish()를 호출했지만 작동하지 않았습니다. 그것은 변화시키지 않았습니다. 대화 상자 활동이 계속 재개되었습니다. – MrGibbage

+0

아, 또한 매니페스트에서 noHistory = "true"및 finishOnTaskLaunch = "true"가 있습니다. – MrGibbage

+0

finish() 호출을 활동의 onPause() 메소드에 넣으십시오. – Krylez

관련 문제