2011-04-20 97 views
0

在我的應用程序中,我有一個「應用程序」和幾個活動。我想在用戶按下主頁按鈕之後的特定時間(例如3分鐘)後終止我的應用程序。我能夠完成「應用程序」的過程,但只要我的活動還活着,他們就會嘗試從最後一個狀態開始。Android:殺死應用程序中的所有進程

Thread isOnDisplayThread = new Thread(new Runnable() { 



      @Override 
      public void run() { 
       Timer mTimer = new Timer(); 

       mTimer.schedule(new TimerTask() { 

        @Override 
        public void run() { 
         Log.d(TAG, (isApplicationOnDisplay) ? "Application on display" : "APPLICATION ON BACKGROUND"); 

         if (!isApplicationOnDisplay) { 
          notOnDisplayTime++; 
          if (notOnDisplayTime >= 10) { 

           Process.killProcess(Process.myPid()); 
          } 
         } else { 
          notOnDisplayTime = 0; 
         } 

        } 
       }, 0, 1000); 

      } 
     }); 

     isOnDisplayThread.run(); 

P.S. isApplicationOnDisplay是一個由每個活動的onPause()onResume()方法控制的靜態布爾值。

有什麼辦法可以殺死應用程序的所有相關活動?

+5

不要殺了應用程序。 – Mudassir 2011-04-20 12:38:07

回答

1

(我不明白爲什麼每個人都試圖殺死自己的應用程序...)

殺一個應用程序應該由應用程序完成從不(儘管有時任務管理器有其優點)。

我能夠完成「應用程序」的過程,但只要我的活動還活着,他們就會嘗試從最後一個狀態開始。

您對狀態處理完全控制,你決定,如果一個活動繼續進行的最新狀態或沒有。如果你不想要目前的行爲,change it,但不要試圖殺死你的應用程序。

要長話短說:Android操作系統決定如果一個應用程序應該殺/停止或不

那如何機器人的設計和應該如何使用?

+0

我知道殺死我自己的應用程序並不是一個好的例子。但是這裏有個問題,當我通過點擊主頁按鈕退出應用程序時,經過一段時間,當我在其他應用程序中時,我看到一個「強制關閉」窗口,顯示我的應用程序包名。我得到的異常是OutOfMemoryException。 – 2011-04-22 09:05:54

+1

比你應該檢查堆棧跟蹤什麼導致OOME並修復它。這比殺死你的應用程序好得多... – WarrenFaith 2011-04-22 09:16:44

0

所有的活動一次殺死是不可能的。

你應該做兩兩件事來殺死活動和服務

1)@覆蓋 公共無效onBackPressed(){
的onDestroy();
super.onBackPressed(); }

2)你應該改變意圖 onDestroy();

3),如果neccessary你應該申請 @覆蓋 公共無效onConfigurationChanged(配置NEWCONFIG)

1

我建議你,完成所有活動,關閉所有主題,不要干擾背景... :))