2012-04-30 4 views
6

사용자가 응용 프로그램을 종료 할 때 데이터베이스를 지울 필요가 있기 때문에 응용 프로그램을 닫을 때를 알고 싶습니다. 사용자가 응용 프로그램을 닫으면 순간 SQLite를 지울 수 있습니다. 데이터베이스, 어떻게 탐지 할 수 있습니까?응용 프로그램이 닫히면 감지합니다.

+2

** 문서 읽기 ** http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle –

+3

그래, 나도 알아,하지만 질문은 전체 응용 프로그램은 닫히고, 활동이 닫히면 아니오입니다. – JLouis

+0

원하는 것은 불가능합니다. 귀하의 프로세스는 사용자 또는 운영 체제에 의해 언제든지 종료 될 수 있으며 귀하는이를 통보받지 않습니다. – CommonsWare

답변

7

기본 활동이 finish()이라고 가정하지 않은 경우 해당 활동의 onDestroy() 메소드 내에서 데이터베이스를 지우는 것이 달성하려는 것 중 가장 근접 할 수 있습니다. 의견에서 지적한대로 http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle을 참조하십시오.

+0

onDestroy()가 때때로 작동하지 않는 것처럼 보입니다. android는 onDestry() 메소드 실행을 건너 뜁니다. – San

15

이것은 시스템에 대한 오해를 반영하는 잘못된 설계 아이디어입니다. 프로세스가 전체적으로 종료되면 코드가 작동하지 않아 코드가 더 이상 실행되지 않습니다.

추적을 수행하고 마지막 onDestory() 작업을 예의대로 수행 할 수 있지만 항상 실제로 발생한다고 가정하지는 마십시오 (이 메서드는 항상이 호출되지 않음). 낡은 사본을 가지고있는 것이 문제라면, 다음 실행시에 그것을 정리하십시오.

즉, 프로세스 종료 신호에 대한 처리기를 제공하기 위해 ndk를 사용해 볼 수는 있지만 모든 경우에 사용할 수는 있습니다. 당신이 이미 포함 된 개념에 익숙하지 않다면, 이것으로부터 어떤 건실한 기능성을 얻을 수있는 가능성은 제한적일 것입니다.

앱이 실행되는 동안 파일이 존재하기 때문에 잠시 실수로 보안 메커니즘을 정리하지 마십시오. 예기치 않은 방식으로 앱이 종료되면 계속 남아 있습니다.

+0

"onDestroy()"실행이 100 % 신뢰할 수 없습니다 (시스템 리소스에서 보류). - 고마워, 좋은 제안이야. – Nactus

관련 문제