2011-11-02 47 views
2

我有我的手機上完美罰款(願望高清)的應用程序。當我按下電源按鈕並返回到應用程序時,數據未被重置。控制應用程序,當按下電源按鈕,並返回到應用程序

用戶向我發送了一個請求,當他們單擊電源按鈕(dell streak)並返回到應用程序時,正在收集的數據將被重置。

我,如果後退按鈕被按下

你怎麼去當按下電源來保持數據,我需要調用當用戶返回到什麼查不到我已經在一個對象保存數據遠應用

感謝您的時間

回答

3

很可能您的活動在後臺被殺害。我想戴爾Streak更傾向於這一點,因爲它與HD相比是一個較舊的設備,並且可能擁有更少的RAM,但我不確定戴爾定製需要多少錢(如果有的話)。

你可能不想聽專門按下電源按鈕,而是在活動lifecycle methods的適當邏輯中掛鉤,尤其是在創建和銷燬活動時調用的方法,而不是暫停和恢復。

什麼樣的數據正在重置?這些數據是否被遠程獲取?有很多方法可以解決這個問題。

一是保存UI狀態時,活動那張被破壞,請參閱onSaveInstanceState(Bundle)

here關於關於persiting數據的一些詳細信息,這coveres數據庫和共享偏好設置這兩個備選方案,以保存應用程序的狀態(或UI在某些情況下狀態)到上述的onSaveInstanceState()方法。這真的取決於你在做什麼:)

此外,是否有任何遠程數據收集操作在生命週期方法(如onCreate())中觸發此活動?如果是這樣的話,可能會有更好的體系結構,比如說生命週期方法只觸發基於時間的有條件刷新請求,這些請求包含在Service(這在後臺中也不太可能被殺死),它只會更新某些模型數據(在mem或數據庫支持的)UI可以從中填充,但具有優勢,即它的持久性,這樣當你的acitvity被終止時,它將對用戶透明!

希望這會有所幫助。

編輯:我只是想,如果你保存狀態時按下後退按鈕,並使用保存的狀態來重置UI狀態,當onResume或onStart被調用,你是否可能只是清理狀態,如果活動是放入背景(但不是殺死)除了按下背景bytton之外的任何其他操作,因爲您保存的狀態對象將爲空/空值/包含默認值?如果是這樣,那麼上述方法仍然是相對的

+0

當點擊回來時,我過度保存一些數據(String,ArrayList)到一個對象。回到屏幕,我正在將數據拉回來。如果我們使用OnPause/OnResume時他們被調用,主要onResume。它是在第一次創建活動時還是僅在簡歷中創建時調用的。謝謝 –

+0

查看上面的生命週期鏈接。只要活動回到前臺,就會調用onResume。您應該考慮在onCreate/onStart/onResume模型對象中設置UI,並在UI元素被操作時使用onSaveInstanceState或覆蓋後退按鈕 – Dori

+0

將開始查看此內容。我會如何在仿真器上重現這一點,因爲它可以在我的手機上正常工作。感謝 –

0

你可能要替換自己的活動的的onPause()和的onResume()方法。

相關問題