2016-09-16 68 views
1

我有一個活動,我認爲這是一項關鍵操作(通過藍牙與另一臺計算機進行特定通信),並且我希望讓用戶離開時該活動,它不能恢復到該狀態。換句話說,如果用戶恢復活動,應該重新創建活動。如何在用戶離開後正確完成(重置)活動

由於此活動使用藍牙可能開始爲結果(Enable-Bluetooth activityRequest-Permissions activity)一個或兩個活動,因此,我不能簡單地finish()onPause()活動。

通過保留活動,我的意思是按下主頁按鈕,需要一個電話或按下按鈕多任務

我有一些活動啓動模式(如singleTask)沒有成功嘗試。

我已經打電話super.onCreate(null)在活動的onCreate()方法,防止其重新創建它已被摧毀之後的特定狀態,但我想重置活動onDestroy()是否已被稱爲與否。

有沒有人有任何建議,應如何正確完成?

編輯:

在可能的複製問題介紹瞭如何退出應用程序,它完全是子任務(而只是finish()會適合我的需要 - 如果我知道在哪裏可以稱呼它)。這個問題是關於找到一個乾淨的方式來恢復以前的活動狀態。

+0

可能重複[如何以編程方式退出android應用程序](http://stackoverflow.com/questions/6330200/how-to-quit-android-application-programmatically) –

+0

建議:不要依賴'onDestroy() '爲您的邏輯或保存任何數據。如果操作系統受到壓力並且其他許多應用程序正在運行,則可能不會調用「onDestroy()」。看到這個:https://developer.android.com/reference/android/app/Activity.html#onDestroy() –

+0

@ th3pat3l我甚至沒有在我的應用程序中實現'onDestroy'。 – Joakim

回答

1

如果您通過主頁按鈕退出狀態或者甚至關閉屏幕時都不希望狀態持續存在,最簡單的方法是使用可用的生命週期事件。這比通過強制關閉應用程序等方式解決Android設計變得簡單得多。

由於每次有人返回應用程序時都需要設置所有設置,因此可以將所有設置邏輯從onCreate移出並放入onResume。然後,在onPause中執行所有必要的清理(終止BT連接等)。唯一可能的陷阱與更改屏幕旋轉/打開鍵盤等事情有關,這可能會觸發您不想要的生命週期事件。如果您在onResume的UI線程上有很多長時間運行的任務,那麼這可能會使您的程序響應速度變慢。

相關問題