2011-08-30 3 views
1

finish()를 사용하여 응용 프로그램을 닫으려고했으나 finish() 메서드가 방금 작업을 마치면 응용 프로그램이 닫히지 않습니다. 지금 System.exit (0)을 사용하여 응용 프로그램을 닫을 때가 있지만 가끔은 예외가 발생합니다. 어떻게 응용 프로그램에서 완전히 빠져 나갈 수 있습니까 ??android에서 애플리케이션을 닫거나 종료하는 방법은 무엇입니까?

+3

Android는 사용자 또는 개발자가 아닌 시스템이 응용 프로그램의 프로세스를 언제 폐기할지 결정한다는 개념을 바탕으로 설계되었습니다. 그것이 드물지만 타고난 상황이 아니라는 것은 드문 일이 아닙니다. 왜 그렇게하는 것이 필수적입니까? –

+0

Android가 앱을 파괴하는 완벽한 순간을 언제 결정해야합니다. 당신이 "안드로이드 애플 리케이션의 라이프 사이클"을 볼 경우 당신은 당신이 애플 리케이션을 마치기 위해해야만한다는 것을 이해할 것이다. .finish(); 당신의 주요 활동에 앱 관리가 완벽합니다. – Aracem

+1

@Chris - 너도 너무 깔끔한 것 같아. 애플리케이션이 확실하게 닫힐 필요가있을 때의 간단한 예 * - 패스워드 매니저와 같은 것임. – barmaley

답변

3

좋아요, 당신은 당신의 응용 프로그램의 ProcessID를 얻을 수 있으며 onDestroy()에서 해당 프로세스를 종료 할 수 있습니다. 그것은

int pid=android.os.Process.myPid(); 
android.os.Process.killProcess(pid); 
+0

이 방법을 사용하면 의도 한 두 번째 활동에 데이터가 전달됩니까? –

+0

감사합니다! 잘 작동하고있어. – Prachi

1

그게 전부 안드로이드의 메모리 모델은 약간 이상해 - 실제로 종료하고자 할 때 기본적으로 OS가 당신을 위해 결정합니다. 앱이 대역폭 또는 과도한 CPU 시간 (사용자의 돈 또는 CPU 시간)을 사용하지 않는 한 Android 시스템의 디자인은 사용자가 앱을 계속 실행해야하는 것과 같으며 시스템은 앱 자체를 종료합니다. 그것은 자원이 필요합니다.

대역폭 또는 CPU 시간 등을 사용하지 않고 종료() 또는 다른 방법으로 사용을 중지하고 원하는 사용자 환경을 제공하기 위해 필요한 모든 상태를 재설정하고 웨이크 잠금 장치 또는 이와 유사한 기타를 삭제하십시오. 하드웨어 수정을 수행하고 서비스를 종료하십시오. 은 stopSelf()로 계속 실행하고 싶지 않습니다.

OS가 메모리가 부족한 경우 (활동이 실제로 사라 졌는지 또는 지금 당장 아무 것도하지 않는 유일한 시간 인 경우) 아무렇게나 실행중인 활동이나 서비스가 강제로 실행됩니다 정리 코드 또는 이벤트 처리기)를 사용하여 "사용자가 사용하고 있거나 눈치 채고있는 어떤 것도 버리지 마십시오."라는 기본적인 우선 순위를 기반으로합니다.

관련 문제