繁体   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