簡體   English   中英

如何保存我的Android應用程序的狀態?

[英]How to save the state of my android app?

當用戶返回我的應用程序時,我想保存我的應用程序狀態並還原它。 到目前為止,我一直在閱讀,我不應該為此使用SharedPreferences,因為那是出於偏好。 也不應使用savedInstanceState Bundle,因為這是不安全的。

建議的方法是將OnPause中的數據保存到數據庫或文件(在我的情況下就足夠了),然后在OnResume中還原它。 但是,有關此方法出現了兩個問題:

  1. 該應用程序只能通過MainActivity進入,所以我想我可以通過其OnResume方法還原狀態。 但是,用戶可能將我的應用留在任何地方。 這是否意味着我應該將應用程序的狀態存儲在應用程序中所有活動的OnPause方法中?

  2. 如果我正確理解了活動的生命周期,則當用戶瀏覽我的應用程序中的活動時,也會調用OnPause和OnResume。 導航時無需存儲和還原; 我只想在用戶離開我的應用程序時存儲狀態並恢復他返回的狀態。 還是我應該忽略這一點,並進行大量存儲和恢復?

到目前為止,我一直在閱讀,我不應該為此使用SharedPreferences,因為那是出於偏好

最后,歡迎您根據需要使用SharedPreferences 它們針對用戶首選項進行了優化

也不應使用savedInstanceState Bundle,因為這是不安全的

僅適用於部分情況 例如,如果用戶分心了一點,它是為了讓用戶填寫部分填寫的表單值。 它不是長期存儲解決方案。

建議的方法是將OnPause中的數據保存到數據庫或文件(在我的情況下就足夠了),然后在OnResume中還原它。

根據數據的性質和用戶交互,有許多用於保存數據的方案和解決方案。 您在聊天應用程序中使用用戶鍵入的聊天消息從聊天服務器中獲取的內容與您從聊天服務器中獲取的內容將與在文字處理程序中所做的非常不同,在文字處理程序中與在游戲中所做的將會非常不同。與您在流媒體播放器等中所做的非常不同。

該應用只能通過MainActivity輸入

這是不正確的,除非您采取非常具體的步驟來執行此操作。 如果用戶在您的應用程序中,然后移動到另一個應用程序(例如,按HOME),則當您的應用程序在后台時,您的應用程序進程可能會終止。 但是,如果用戶(例如,在半小時內)(例如,通過概覽屏幕/最近任務列表)相當快地返回到您的應用,則Android會嘗試將用戶恢復到上次使用的狀態。 ,這可能是您的任何活動。

所以我想我用它的OnResume方法恢復了狀態。

每個活動都對自己的狀態負責。 該狀態中的某些狀態可以很好地共享(例如,單例POJO緩存管理器)。 但是,活動不應假定先前已為其建立狀態。

這是否意味着我應該將應用程序的狀態存儲在應用程序中所有活動的OnPause方法中?

同樣,這很大程度上取決於您在應用程序中的工作。 答案可能是“在用戶按下按鈕時存儲狀態”或“在用戶輕掃時存儲狀態”或“在我們從服務器傳入的MQTT消息中獲取狀態時存儲狀態”或其他。

我只想在用戶離開我的應用程序時存儲狀態並恢復他返回的狀態

恕我直言,通常情況下,您想存儲狀態。 有了適當的緩存,在應用程序處於活動狀態時,“恢復”非常快,並且只有在您擁有大量大數據(並且緩存開始彈出值)或者您的進程終止並再次啟動時,這才是緩慢的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM