Androidアプリが終了したように見せかけて終わってない件
複数のActivityで構成するAndroidアプリを作るってことで、共通の処理をまとめたHogeActivityを作った。そのなかで、dispatckKeyEvent()をオーバーライドして、BACKキーが押されたらfinish()を呼び出すようにコードを書いた。
GPSを使うので、LocationManagerにLocationListenerを登録して動作確認のテストをした後で気付いた。
全部のActivityが終了したあとも、LocationListenerからのログが出続けてる。単にLocationManagerからLocationListenerを削除し忘れてるバグなんだけど、これってアプリが終わってないって意味よね?
バグをそのまま残しておいていろいろと試すけど、どうもアプリのプロセスが残ったままになって生きてる。Activityが終了してもプロセスは生きてるってことだ。
アプリが終了してるんならプロセスも終了したほうがいいよね?
スタックの最後にあるActivityでBACKボタンが押されたときに、quitフラグをチェックして、onStop()でプロセスを終了させるようにした。
private boolean quit = false; @Override public boolean dispatchKeyEvent(KeyEvent e) { if (e.getKeyCode() == KeyEvent.KEYCODE_BACK && e.getAction() == KeyEvent.ACTION_DOWN) { quit = true; finish(); return true; } } @Override public void onStop() { super.onStop(); if (quit) { android.os.Process.killProcess(android.os.Process.myPid()); } }
もっといい方法があったら教えてくだちい。