위의 첫 번째 게시물에서 Neil Traft의 답을 통해 이러한 시나리오에 대한 완벽한 해결책을 찾았습니다.
앱의 백 스택에 하나의 액티비티 만 있으면 System.exit (0) 또는 android.os.Process.killProcess (android.os.Process.myPid())가 모두 작동하는 것처럼 보입니다. 그렇지 않으면 Android가 앱을 다시 시작합니다. (top - 1) 액티비티를 포 그라운드로 밀어 넣는다. 아마도 안드로이드는 사용자가 앱과 상호 작용하고 갑자기 "추락"했다고 가정하기 때문에 계속해서 상호 작용해야한다.
내 솔루션은 먼저 Activity.moveTaskToBack()을 사용하여 백그라운드로 앱을 보낸 다음 위의 두 가지 방법 중 하나를 호출하는 것입니다.
private void terminateApp() {
// TODO: Don't forget to clean up your background threads, services, etc.
// send the app into background, otherwise Android will relaunch the app process if you have multiple Activities in your backstack.
moveTaskToBack(true);
// kill everything running in this process.
System.exit(-1); // or you can use android.os.Process.killProcess(android.os.Process.myPid());
}
안드로이드 디자인 원칙에 위배된다는 점을 제외하면이 접근법에는 아무런 문제가 없습니다 ... 정말로 필요한 경우 완벽하게 작동합니다.
희망이 있으면 도움이됩니다.
위의 질문 중 하나에 의견을 추가하는 것은 자신의 질문을 물어보고 즉시 대답하는 것보다 효과적이었을 것입니다. – spartygw
다른 모든 질문을 거쳐 내 히트 앤 트라이얼을 한 후에도이 솔루션을 찾으려면 상당한 시간이 걸렸습니다. 다른 질문에 대한 답변이나 의견은 대부분의 사용자가 볼 수 없으므로이를 적용 할 수없는 페이지에서 내 어딘가에 계속 접근합니다. 그래서 나는 다른 사람들이 그 해결책을 빨리 찾을 수 있도록 새로운 질문을 만들었다. 그래서, 나는 그것이 찬성 투표를받을 자격이 있다고 생각하지 않습니다. 그러나 당신의 의견을 가지고있는 것은 완벽합니다. – keylime
그리고 btw, 나는 다른 질문에 대해 논평을 시도했지만, 새로운 사용자로서, 시스템은 내가 코멘트를 허락하지 않을 것이다. 질문을 게시하기 전에 확인한 http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions에 대한 답변을 포함하여 질문을 게시하는 것이 좋습니다. 그것을 대답하십시오. – keylime