0

에서 B 내가 스택에서 활동 A-> B가 있어야하고, 활동 C를 시작, 내가이 모든 작품을 잘활동을 닫은 후 안드로이드가 더 이상 스택

 Intent starter = new Intent(context, MainActivity.class); 
    starter.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    context.startActivity(starter); 

를 호출하지 활동으로 돌아갑니다, 활동 A와 B는 모두 OnDestroy를 호출합니다. 지금 하드웨어 '뒤로'버튼을 누르면 활동이 적절히 끝나고 숨겨집니다. 그러나 문제는 이제 하드웨어 최근 응용 프로그램 버튼을 클릭하여 응용 프로그램을 통해 응용 프로그램으로 돌아 가면 활동 A로 돌아갑니다. 활동이 파괴되었지만 스택에 없습니다. 매니 페스트에서는 android : launchMode가 설정된 활동이 없으므로 기본값으로 설정됩니다.

유일하게 가능한 다른 관련 정보는 실행기 활동 인 android : launchMode = "singleInstance"인 활동 X가 있고 그것이 파괴되면서 활동 A를 시작한다는 것입니다. 어쨌든 그 활동 스택에 있어야합니다.

+0

위에 작성된 코드로 덮어 쓸 수 있습니다. 스택에 코스보다 아무것도없는 경우 Launcher Activity가 호출됩니다 (Activity A를 호출하는 것보다). 그래서 당신은 어떤 일이 일어날 것으로 예상 하는지를 말해 줄 수 있습니까? – AabidMulani

+0

죄송 합니다만 조금 혼란 스럽지만 마지막 단락에 설명되어 있습니다. 활동 X는 실제로 시작 활동이며 singleInstance이며 다른 활동은 해당 활동에서 시작할 수 없습니다. 활동 A를 실행 한 다음 완료합니다. 따라서 액티비티 X가 다시 시작되면 액티비티 A가 시작되므로 액티비티 A가 시작됩니다. –

답변

0

활동 C에

가 호출 여부 확인 로그를 삽입하십시오 actvity C.의)들의 OnDestroy (라고 수 있지만 버튼을 다시 눌러 동안. 이것은 귀하의 활동 A가 다시 시작되는 유일한 이유입니다.

Android Back button calls ondestroy?

이 당신을 위해 작동하지 않는 경우 알려 주시기 바랍니다 참조하십시오.

+0

onDestory가 호출되었지만 액티비티 스택의 맨 아래에있는 뒷주람에서 발생해야합니다. 스택에서 유일한 활동이면 파괴되고 응용 프로그램으로 돌아 가면 onCreate가 다시 해당 활동에 호출됩니다. 문제는 이전에 설명한 패턴에 따라 활동 A와 B가 파괴되었습니다. –

+0

아니요, 활동 A를 호출합니다. –

+0

왜? 작업이 삭제되고 작업 C에 대한 플래그를 통해 새 작업이 생성됩니다. –

0

백 버튼이 follwing을 코드로 덮어 쓸 수 있습니다 하드웨어 :

@Override 
public void onBackPressed() { 
    //put Intent to go back here 
} 

당신은 그냥 나는 그것이 올바른 행동이라고 생각하여 설명을 읽은 후

+0

사실이지만이 작업이 실제로 모듈화되고 독립적이지 않게합니다. 스택 아래에 다른 활동이있는 경우 팝업이 나타납니다. 나는 왜 그것이 이미 파괴되었고 이전에 스택에 있던 활동으로 돌아가는 지 혼란스럽고 발사 활동이 아닙니다. –

관련 문제