2015-01-07 12 views
-1

내 앱에 특정 오류가 발생하면 시스템에 남아있는 흔적도없이 앱을 종료하고 싶습니다. 나는이 주제에 대해 많은 스레드를 보았습니다. 특별히이 두 가지가 있습니다.Android - 프로그래밍 방식으로 응용 프로그램을 종료하거나 종료하는 완벽한 솔루션?

Is quitting an application frowned upon?

How to quit android application programmatically

대답은 좋지만 제안 된 솔루션은 너무 지루한 및/또는 불필요하게 복잡하다.

+1

위의 질문 중 하나에 의견을 추가하는 것은 자신의 질문을 물어보고 즉시 대답하는 것보다 효과적이었을 것입니다. – spartygw

+0

다른 모든 질문을 거쳐 내 히트 앤 트라이얼을 한 후에도이 솔루션을 찾으려면 상당한 시간이 걸렸습니다. 다른 질문에 대한 답변이나 의견은 대부분의 사용자가 볼 수 없으므로이를 적용 할 수없는 페이지에서 내 어딘가에 계속 접근합니다. 그래서 나는 다른 사람들이 그 해결책을 빨리 찾을 수 있도록 새로운 질문을 만들었다. 그래서, 나는 그것이 찬성 투표를받을 자격이 있다고 생각하지 않습니다. 그러나 당신의 의견을 가지고있는 것은 완벽합니다. – keylime

+0

그리고 btw, 나는 다른 질문에 대해 논평을 시도했지만, 새로운 사용자로서, 시스템은 내가 코멘트를 허락하지 않을 것이다. 질문을 게시하기 전에 확인한 http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions에 대한 답변을 포함하여 질문을 게시하는 것이 좋습니다. 그것을 대답하십시오. – keylime

답변

-1

위의 첫 번째 게시물에서 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()); 
} 

안드로이드 디자인 원칙에 위배된다는 점을 제외하면이 접근법에는 아무런 문제가 없습니다 ... 정말로 필요한 경우 완벽하게 작동합니다.

희망이 있으면 도움이됩니다.

+0

"Taking a cue"는 표절과 다른 점이있어서 평판 포인트를 얻기 위해 질문에 대한 스팸 - 게시 링크가 있습니다. 이것은 역화 될 가능성이있다. – 323go

+0

이것이 표절이라고 말하는 것과 같은 해결책을 어디에서 보았습니까? 나에게 알려 줘서 내가 내 질문을 지울거야 (잘하면 거기에 할 수있는 방법이있다) – keylime

+0

이것은 Neil Traft의 대답과 같은 대답이다. 당신은 두 가지 필수적인 비트를 가져 갔지만 설명을 생략하고 그의 대답을 좋게 만들었습니다. – 323go