안드로이드 개발 정보
(글 수 568)
안녕하세요
안드로이드에서 앱을 종료하면 이전에 메모리에 남아 있던 내용때문에
오작동 하는경우가 있을겁니다.
특히 NDK 환경에서 네이티브로 개발한 경우.. 더더욱 문제점이 심각한데요..
예를들어 cocos2dx로 게임을 개발하였는데.. 디바이스 back key를 누르면
acitvity finish()가 호출되고 onDestroy()에 의해서 java -> c 를 호출하고
navtive 영역에서 onDestroy에 대한 동작을 받아주는 경우로 만들어야 하는데
동작간에 실수가 있을경우 문제점이 있을 수 있습니다.
여러가지 고민중 프로세스 종료에 대해서 알아봤는데요..
System.exit(0); 으로는 해결 할 수 없고
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
Process.killProcess(Process.myPid());
으로 자신의 프로세스를 강제종료 시켜서 해결했습니다.
(adb shell 에서 ps 명령어로 확인해 보시길)
물론 사이드이펙트도 발생할 수 있습니다.
http://stackoverflow.com/questions/11035328/why-calling-process-killprocessprocess-mypid-is-a-bad-idea
Process.killProcess(Process.myPid());
는 진저 넘어가면 동작이 안되는걸로 압니다
그래서 제경우는 매니페이스에서 싱글인스턴스로 동작하게 만들고
피니쉬하면서 런처를 호출합니다...