2010-08-16 53 views
3

我們都知道,點擊設備上的後退按鈕不會中止應用程序,它只會完成(銷燬)在前臺運行的活動。如何在這種情況下完成一項活動?

那麼我遇到了一些代碼,它可以幫助我捕獲後退按鈕信號,以便我不能退出應用程序。在這種情況下退出它的唯一方法是按Home鍵。

現在這種情況給我帶來了一個獨特的缺點!無法以 殺死 在我自己選擇的時間完成應用程序允許應用程序在沒有任何變化的情況下繼續在後臺運行。

那麼在這種情況下,任務管理器是我唯一的朋友,還是有一種方法可以讓我殺死這個應用程序?

PS:如果在我的時候,家裏按下按鈕會發生什麼悟性上的瑕疵,我很想得到糾正...... =)

回答

3

沒有辦法用標準按鈕殺死後退按鈕或主頁按鈕。如果應用程序不是服務並且發送到後臺,並且看起來它正在耗盡內存,但是如果應用程序沒有運行該應用程序的任務,則該應用程序將暫停,並且不會使用任何需要的資源其他進程。

作爲開發人員,請確保您不會更改後退按鈕的行爲,並且您註銷了活動的onPause方法中的所有偵聽器。這會阻止您的應用程序在後臺使用電池和處理能力。如果您需要後臺進程,請將其作爲服務啓動,併爲用戶提供禁用的可能性。

此生命週期行爲與您在普通機器上習慣的行爲不同。但是,如果應用程序寫得或多或少正確,它應該更適合使用移動設備。您應該至少閱讀Android博客上的multi threading the android way,也可能是When to include an exit button。這將使您更好地瞭解Android上關於多點觸摸和退出應用程序的預期可用性模式。

+0

感謝您的回覆。我不是故意要殺死應用程序。更像是打算完成程序被調用。但是當我改變後退按鈕的用途時,在這種情況下,當主頁按鈕被調用時,結束將不會被調用。所以我想我從你的代碼中得到了我所需要的,以便了解即使後退按鈕被禁用,應用程序也不會佔用資源!謝謝... – Shouvik 2010-08-16 09:35:05

3

如果你想每次來完成您的應用程序時,用戶點擊回家並重新啓動您的應用程序,您可以在您的Manifest中指定此屬性。android:finishOnTaskLaunch =「true」。然而,Android不允許我們通過代碼殺死一個應用程序,不推薦。

+0

實際上,android確實允許我們通過代碼殺死我們。它叫做killBackgroundProcess()。看看它。它幾乎殺死了在內核級別運行的進程。您可以通過運行adb shell和top進行驗證。感謝您的回覆。 – Shouvik 2010-08-16 09:37:20

+0

首先,該特定方法支持API Level 8(意味着SDK 2.2)。因此,您無法在運行較低SDK版本的設備中執行此操作。截至目前運行2.2 SDK的設備只有4.5%(按照谷歌)雖然我沒有使用它,但我不確定它是否會殺死整個應用程序,或者會終止/重新啓動後臺進程。 http://groups.google.com/group/android-developers/browse_thread/thread/6a544bfd05bf10cf http://stackoverflow.com/questions/2877140/android-2-2-deprecates-restartpackage-but-adds - 另一種頭痛 – DeRagan 2010-08-16 10:05:54