2011-11-03 2 views
2

두 개의 활동 FirstActivity와 SecondActivity가 있습니다.Android : 활동 스택에서 활동을 완전히 제거하려면 어떻게해야합니까?

FirstActivity에는 의도 필터 MAIN, LAUNCHER 및 DEFAULT가 있습니다. SecondActivity는 일반적인 활동 일 뿐이며 AndroidManifest에는 다른 플래그가 설정되어 있지 않습니다.

내 응용 프로그램은 C2DM을 사용하며 알림을 받으면 작업 표시 줄 아이콘이 표시되고 클릭하면 SecondActivity가 열립니다.

알림 도착 알림에는 두 가지 시나리오가 있습니다. 먼저 알림이 도착하고 두 번째 내 응용 프로그램이 완전히 실행되고 있지 않을 때 내 응용 프로그램이 이미 실행 중입니다.

첫 번째 시나리오에서는 모든 것이 정상입니다. 알림이 수신되면 알림 드롭 다운에서 클릭하고 내 SecondActivity가 표시됩니다. 다시 누르면 SecondActivity가 완료되고 응용 프로그램이 백그라운드로 이동합니다. 최근 응용 프로그램에서 응용 프로그램을 다시 시작하면 MAIN, LAUNCHER 및 DEFAULT 이후 올바른 FirstActivity가 표시됩니다.

두 번째 시나리오에서 알림을 받으면 알림 드롭 다운에서 클릭하고 내 SecondActivity가 표시됩니다. 다시 누르면 SecondActivity가 완료되고 응용 프로그램이 백그라운드로 이동합니다. 최근 응용 프로그램에서 응용 프로그램을 다시 시작하면 SecondActivity가 잘못 표시됩니다. FirstActivity는 새로운 시작이어야하기 때문에 표시 될 것으로 기대됩니다.

두 번째 시나리오 후에 응용 프로그램을 강제로 시도했지만 그 결과가 동일하므로 FirstActivity Again에서 다시 시작할 수 있도록 휴대폰을 다시 시작해야했습니다.

같은 문제가 발생 했습니까? 아니면 그냥 나야? 제 구성이 잘못되었다고 생각합니까?

또한 noHistory = false를 SecondActivity로 설정했지만 결과는 동일합니다.

답변

0

주요 활동 AndroidManifest 파일에서 lauch 모드를 "singleInstance"로 설정해보세요. 두 번째 활동에 대해 "Finish On Task launch"를 true로 설정합니다.

+0

주 활동에서 clearTaskOnLaunch를 true로 설정하는 것이 좋습니다.그런 식으로 singleInstance를 설정할 필요가 없습니다. – Rohit

+0

나는 이것을 지금 시도했지만 아무 소용이 없다. – Macchiato

0

두 번째 시나리오에서는 응용 프로그램이 닫히면 활동 스택이 비어 있다고 생각합니다. 그래서 지금 당신은 activity2를 시작하고 있습니다. 이것은 이것이 스택에있는 유일한 활동이라는 것을 의미합니다. onbackpress를 무시하고 두 번째 시나리오 인 경우 activity1을 시작하면 원하는 뒤로 동작을 수행 할 수 있습니다.

+0

실제로 두 번째 시나리오에서는 뒤로 단추를 눌렀을 때 예상되는 결과가 SecondActivity를 완료하는 것입니다. 그러나 응용 프로그램이 시작 프로그램이나 최근 응용 프로그램에서 시작되면 SecondActivity가 다시 표시됩니다. 내가 FirstActivity를 표시하기를 원한다. 왜냐하면 나는 새로운 시작을 기대하고 있기 때문이다. – Macchiato

0

당신은

intent1.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 

이 나를 몇 번 일했다, 아니 역사를 다음과 같이 설정 플래그와 두 번째 작업을 호출 할 수 있습니다. Android Doc

+0

아래 투표자가 어떤 이유로 든 아래 투표 이유를 알 수 있습니까? – MKJParekh

+0

나는 투표를하지는 않았지만 그는 "noHistory = false를 SecondActivity로 설정하려고 시도했지만 여전히 결과는 같습니다."라는 질문에 답했습니다. – Robert

+0

@ 로버트 예치 맨, 질문을 읽었지만 여전히 답변을주었습니다.이 솔루션은 항상 제가 사용하는 것입니다. 한가지 더 할 일이 있습니다. onPause를 오버라이드하고 백그라운드에서 진행될 때마다 finish()를 호출합니다. – MKJParekh

1

에서

읽기는 '최근 애플리케이션'바로 가기에서 응용 프로그램을 시작, 그것은 마지막으로 활동을 시작합니다. 따라서 응용 프로그램 목록에서 응용 프로그램을 시작하고 문제가 해결되는지 확인하십시오.

+0

고마워요. 내 문제를 해결하는 동안 문제가 전혀 없었습니다. 최근 응용 프로그램 목록의 바로 가기는 실제로 SecondActivity를 가리 킵니다. – Macchiato

1

올바른 동작입니다. "최근 응용 프로그램"을 통해 응용 프로그램을 시작하면 마지막 활동을 가리 킵니다. 일반 응용 프로그램 목록을 통해 실행 해보십시오.

+0

예! 고마워요. – Macchiato

+0

+1 감사합니다. !! – MKJParekh

관련 문제