2013-08-17 55 views

回答

2

由於@Ozair正確地詢問,它取決於您定義的內容爲closing of app

你可以根據不同的需要以下的一種或兩種:

  1. 如果你想使用後退按鈕來檢測應用程序關閉,然後從你的最後一次活動中,你可以檢測通過覆蓋onBackPressed函數按BACK按鈕。在那裏你可以減少你的價值。

  2. 如果您還在考慮按下HOME按鈕進入背景時的情況,那麼在您的活動中,您將必須檢測到HOME按鈕被按下。有很多解決方案,沒有更多的工作來檢測HOME按鈕,但this回答How can I detect user pressing HOME key in my activity?問題似乎爲我工作。 因此,您可以檢測HOME按鈕並減少您可以在SharedPreferece中保存的值。

可以有其他情況下,你打電話給finish()並關閉你最後的活動。你的問題還不清楚你是否也在考慮這個案例。

希望這給你一些機會來思考它。

+0

我想把關閉應用程序定義爲正在處理它的進程。我的目標是每次應用程序運行時下載文件 - 在我的情況下,當應用程序未處於活動狀態時,無法下載大文件。 –

+1

再次通過殺死你是指'強制停止'還是被操作系統殺死?或者你的意思是應用程序正在被用戶關閉。 –

+0

嗯,我會對每一種情況感興趣,但主要是當用戶關閉應用程序時的情況 –

1

問題是你的意思是什麼「關閉」?
如果關閉所有活動,則應用程序進程可能仍在運行。如果你的意思是「關閉」只是關閉你所有的活動。您可以爲所有打開的活動定義一個「計數」,您可以將其存儲在數據庫或SharePerference中。我認爲你可以做如下(假的碼):
在你的項目,你應該定義BasicActivity:

public class BasicActivity extends Activity { 
    onCreate() { 
     mPreference.incActivityCount();//++ 
     super.onCreate(); 
    } 

    onDestory() { 
     mPreference.decActivityCount();//-- 
     if(mPreference.getActivity() == 0) { 
      //All being opened Activities have been closed. 
      onAppHasNoUIs(); 
     } 
     super.onDestory(); 
    } 

    onAppHasNoUIs() { 
      //All being opened Activities have been closed. 
    } 
} 
相關問題