簡體   English   中英

在所有活動中共享數據的最佳方式是什么?

[英]What is the best way to share data throughout all activites?

所以我所有的活動都需要設備的當前位置,以及通過 Http 請求檢索到的一組數據。 我想知道一次找到此信息並在我的所有活動中共享它的最佳方法是什么?

您可以使用共享首選項為 Android 保存數據。 並在需要時獲取偏好。

要在應用程序的活動之間傳遞(或保留)數據,您可以使用:

  1. SharedPreferences

Shared Preferences 允許活動和應用程序以類似於 Map 的鍵值對的形式保留首選項,即使用戶關閉應用程序也將保留。

Android 將共享首選項設置作為 XML 文件存儲在 DATA/data/{application package} 目錄下的 shared_prefs 文件夾中。 可以通過調用 Environment.getDataDirectory() 獲取 DATA 文件夾。

鏈接到 SharedPreferences 示例教程

  1. Intent.putExtra(...)

每當您需要一個活動的數據在另一個活動中時,您可以在啟動活動時在這兩者之間傳遞數據。 android 中的 Intent 提供了這種使用 Extras 在 Activity 之間傳遞數據的便捷方式。

通過附加教程鏈接到意圖傳遞數據

找到你的場景:

  1. 如果您打算使用非常少量的數據,例如姓名、電話號碼或某些值,即使應用程序關閉也希望存儲這些數據,請使用共享首選項。
  2. 如果您要使用對象List<Object> ( List<Object> ) 並且是大量數據,即使應用程序關閉也想存儲這些數據,請使用ROOM/SQLite
  3. 如果您打算使用對象List<Object>List<Object> )並且是少量數據,您只想在應用程序處於活動狀態時存儲這些數據,請使用靜態對象。

我認為,您應該對從網絡中檢索的位置和靜態變量使用共享首選項。

如果要使用設備的當前位置,請在獲取后使用fusedLocationProviderClient ,並將其存儲在共享首選項中。 每當您由fusedLocationProviderClient提供位置時,更新共享首選項數據。

如果從網絡中檢索到的數據是一個對象,每次打開app都會發生變化,並且是少量數據,那么使用靜態變量,否則使用ROOM/SQLite

暫無
暫無

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

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