안드로이드 백버튼으로 앱을 종료하면 네이티브 모듈이 메모리에 남아서 동작하고 있어서, 다시 앱을 켰을때 비정상 처리로 죽는 문제를 겪어서요.
(이건 네이티브 모듈을 수정하면 해결되긴 하겠지만요…)
정상 종료 해보려고 exitOnClose로 처리해봤지만 안되었고, currentActivity를 finish하게 처리해봤지만 안되더군요.
백버튼으로 앱을 종료할때 완전하게 앱을 죽이는 방법을 찾지 못해서 고민끝에 백 버튼을 누르면 홈으로 가도록 처리해봤습니다.
(push를 수신하기 위한 모듈은 살려두고, 다른 모듈들은 메모리에서 날리는 식으로 종료 부분을 깔끔하게 하고 싶긴 하지만 일이 너무 크더군요.)
안드로이드 백버튼 이벤트가 잘 발생이 안되서 그걸 해결하는 것도 한참 실험을 해봤습니다.
우선 백버튼 이벤트를 listen하려면 index.xml에 표현하는게 정확하더군요.
<Window platform="android" id="centerWindow" role="centerWindow" exitOnClose="true" onAndroid:back="indexBackButton">
그리고 index.js에 function을 기술합니다.
// 안드로이드 백버튼으로 종료될 때
function indexBackButton() {
if (OS_ANDROID) {
Ti.API.info("Android Back button on Index ");
Alloy.Globals.closeAllWindow();
var intent = Ti.Android.createIntent({
action: Ti.Android.ACTION_MAIN
});
intent.addCategory(Ti.Android.CATEGORY_HOME);
Ti.Android.currentActivity.startActivity(intent);
}
return false;
}
이렇게 하면 앱이 종료되지는 않고, 홈 런처로 나가집니다.
이렇게 처리해도 되는지 살짝 의구심이 들지만요…
문제 있는 모듈을 수정하고, 종료시에 필요한 처리들을 해서 앱을 백버튼으로 잘(?!) 종료할 수 있게 처리하는 것은 이어서 해보겠습니다.