2014-09-26 112 views
0

後,我推回到鍵退出我的Android應用程序,這個應用程序的過程中仍然存在:如何在Android應用程序退出後終止進程?

$ adb shell ps |grep -is accelerometerplay 
u0_a122 2679 139 504048 23968 ffffffff 400d13c4 S com.example.android.accelerometerplay 

我的onDestroy()中添加一些代碼:

@Override 
public void onDestroy() { 
    super.onDestroy(); 

    android.os.Process.killProcess(android.os.Process.myPid()); 
} 

難道這還不夠? 或者我必須做一些額外的事情?

+0

我認爲KillProcess只會殺死特定的進程ID。如果進程處於堆棧狀態,則不會被破壞! – 2014-09-26 11:22:17

+0

使用'onStop()'。如果你完成()你的活動,''onDestroy()'只保證被調用。它甚至不能保證你的應用程序是否進入了背景並被殺死。閱讀有關活動生命週期的信息。你可以通過在'super.onDestroy()'上放置一個斷點來看到它,它不會到達斷點。 – Simon 2014-09-26 11:22:43

回答

2

試試這個:

@Override 
     public boolean onKeyDown(int keyCode, KeyEvent event) { 

      if (keyCode == KeyEvent.KEYCODE_BACK) { 

       android.os.Process.killProcess(android.os.Process.myPid()); 

       return false; 
      } 

      return super.onKeyDown(keyCode, event); 
     } 
+0

這是可以的,但是如果由於返回鍵以外的原因而導致活動死亡,該怎麼辦? – Simon 2014-09-26 12:01:51

+0

但這段代碼onDestroy在活動 – Talha 2014-09-26 12:09:30

+0

導致你的應用程序仍然在後臺運行,並沒有調用onDestroy()....隨着此代碼嘗試重寫onKeyDown由Vishal給出的答案..應該正常工作 – ashutiwari4 2014-09-26 12:13:35

0

你爲什麼要這麼做?當他沒有足夠的資源時,Android會自行處理它。