2011-04-30 107 views
3

我想知道如何在用戶按下主頁按鈕時退出應用程序。Android - 當用戶按主頁按鈕時如何退出應用程序?

據我所知,Home Button在後臺移動正在運行的應用程序,並將Launcher進程放在前面。

我知道我可以使用完成(),但我不知道我應該叫它的位置,因爲我不知道哪個函數會在用戶按Home鍵時接到呼叫。

謝謝。

+2

不管問題,你認爲你解決這樣可以更好地解決與其他技術。我還沒有遇到主動銷燬活動的正當理由,因爲用戶響應了「通知」。例如,如果您爲了安全起見(例如強制登錄),請根據時間進行操作。無論用戶是按下HOME還是響應「通知」或任何應該沒有方向的東西,不管用戶是否將瀏覽器標籤從Web應用程序切換開來,都應該使它們自動從Web應用程序註銷。 – CommonsWare 2011-04-30 18:38:53

+2

同樣,如果因爲用戶返回活動而崩潰時主動銷燬活動,請修正錯誤,而不是導致用戶丟失上下文。而且,如果你有一個單一活動的應用程序,這是非常有用的,因爲在Android中沒有任何東西允許你「退出應用程序」。如果你覺得這在你的情況下仍然有點合理,我很樂意爲你說服我。 – CommonsWare 2011-04-30 18:40:40

+0

@CommonsWare我認爲你是對的。我應該嘗試找到其他選項來處理主鍵而不是銷燬我的應用程序。謝謝你讓我醒來。但我的問題很簡單,當用戶按Home鍵時,我的應用程序不會崩潰。其實問題出在我的主屏幕小部件上,因爲每當我按下主鍵退出我的應用程序,然後如果我點擊我的主屏幕小部件,它會在執行必要的任務後再次啓動主要活動。 – Varundroid 2011-04-30 20:59:33

回答

3

取決於你想要做什麼,覆蓋onUserLeaveHint可能是最好的選擇:

http://developer.android.com/reference/android/app/Activity.html#onUserLeaveHint()

這將讓你的應用程序知道您的應用程序正在退出,因爲用戶選擇切換應用程序(就像點擊主頁按鈕或選擇通知一樣)。如果傳入的電話(或類似)導致您的應用程序轉到後臺,此提示功能將會調用而不是,因爲用戶未啓動該操作。

+1

謝謝。這正是我期待的。我不知道爲什麼CommonsWare在Android中提供這種方法來執行我們希望在Home Key事件中執行的任務時,會說「這在android中不支持」。奇怪!! – Varundroid 2011-04-30 17:53:28

+2

@Varundroid:我一直在忘記那種方法。這並不重要,因爲無論如何您都無法「退出應用程序」。當'onUserLeaveHint()'返回'true'或'false'時,我還擔心一些 - 文檔概括了兩種情況,但還有更多。 – CommonsWare 2011-04-30 18:42:44

+4

onUserLeaveHint()也會觸發,如果你開始一個新的意圖煩人 – 2012-01-16 15:11:26

1

在我的情況下,

我在申請 許多活動,所以如果我使用「onUserLeaveHint」,「的onStop」或...

它只是趕上活動的過渡。

所以我把下面的代碼放在每一個活動中。 最後抓住用戶的主頁按鈕動作。

第一,你有單獨的對象

public class ActivityContext { 
    public static Context context = null; 
} 

和每一個活動,

@Override 
protected void onStop(){ //onStop runs after New one's onResume 
    super.onStop(); 
    if(ActivityContext.context==context) { //user home button out 
     AppStartEnd.sendAppEndData(context); 
    } 
} 
@Override 
protected void onResume(){ 
    super.onResume(); 
    ActivityContext.context = YourActivity.this; 
} 

我希望這將有助於你

+0

適用於我的應用程序:) – Hvn 2016-04-13 00:36:54

相關問題