2011-05-09 3 views
0

안드로이드에게 말할 방법이 있습니까? "사용자가 '집'키를 눌러이 활동을 종료하면이 응용 프로그램과 관련된 모든 활동이 즉시 완료됩니다(). 또는, onPause() 메소드가 'home'을 눌러 사용자가 강제로 호출하여() 자신을 종료 할 수있는 Activity가 아니라 Activity를 시작한 Activity도 완료해야합니다.응용 프로그램과 관련된 스택의 모든 작업을 완료하는 방법()?

문제는 워크 플로입니다. 내 응용 프로그램의 사용자는 기본적으로 주 활동 및 "세부 활동"창 사이를왔다 갔다합니다. 그들은 주요 액티비티에서 무엇인가를보고, 살짝 두드리며, 아이 디테일 액티비티가 생성되면 잠시 동안 사용하고 나서 다시 주 액티비티로 돌아갑니다. 하위 버튼을 시작한 후에는 주요 활동을 마칠 수 없습니다. 왜냐하면 뒤로 버튼이 작동하지 않을 것이기 때문입니다. 문제는 이제 사용자가 자식 활동의 홈 키를 눌러 종료하면 좀비 부모 활동 뒤에 남겨 둡니다. 사용자가 응용 프로그램을 다시 시작한 후 잠시 동안 사용하면 주 활동 (서비스를 종료 한 후 종료())에서 메뉴 -> 종료를 선택하여 명시 적으로 종료를 트리거하고, 활동이 종료되고 사용자 이전 실행에서 좀비 활동으로 덤프됩니다 (사용자가 아무 것도하지 않으면 해당 서비스가 이미 종료되어 있고 그렇지 않은 경우 수신 대기 한 모든 BroadcastReceivers가 제거되었으므로 즉시 실행이 중단됩니다) 도움을 청하는 소리는 들리지 않습니다.)

나는 이미 안드로이드를 가지고 있기 때문에 다소 의아해합니다. launchMode = "singleTask"는 내 발사 활동의 매니페스트 태그에 앉아 있기 때문에 launchMode = "singleTask"는 다음과 같은 것을 막기 위해 명시 적으로 생각되었습니다. 이전에 실행 한 느린 활동이 다시 시작되기 전에 안전하게 죽었는지 확인하여 일어납니다.

답변

1

이 아마도 당신이 clearTaskOnLaunch와 스택의 모든 활동을 표시 할 수 있습니다 (http://developer.android.com/guide/topics/manifest/activity-element.html#clear).You이 속성 작업에있을 수있는 모든 활동을 표시 할 수 있습니다 참조

+0

지금까지 답변을 얻은 모든 사람들에게 빠른 메모 ... 아직 작업 중입니다.하지만 실수를 한 번 발견했습니다. launchMode = "singleTask"가 "launch" 액티비티를 적용하고 그 시점부터 모든 것에 적용했을 때, 모든 A에 launchMode = "singleTask"를 지정해야했습니다. 매니 페스트에 ctivity 태그. 나는 다음 날 어떤 시점에서 하나 이상의 활동을 위해 그것을 바꿀만한 이유를 발견 할 것입니다. 그러나 그것은 내 머리를 긁어 먹었던 큰 문제를 해결했습니다. – Bitbang3r

3

이 일을하는 가장 쉬운 방법은 다음과 같습니다.

Intent i =new Intent(CurrentClass.this,HomeClass.class); 

i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

startActivity(i); 
관련 문제