在所有活动中共享数据的最佳方法是什么?

时间:2019-04-06 01:15:43

标签: java android http location

因此,我所有的活动都将需要设备的当前位置,以及通过Http请求检索的一组数据。我想知道一次找到这些信息并在我所有活动中共享的最佳方法是什么?

3 个答案:

答案 0 :(得分:0)

您可以使用共享首选项为Android保存数据。并在需要时获取首选项。

答案 1 :(得分:0)

要在应用程序的活动之间传递(或保留)数据,可以使用:

  1. SharedPreferences
  

“共享首选项”允许活动和应用程序以键-值对的形式保留首选项,类似于“映射”,即使用户关闭应用程序,该映射也将保留。

     

Android将“共享首选项”设置作为XML文件存储在DATA / data / {application package}目录下的shared_prefs文件夹中。可以通过调用Environment.getDataDirectory()获得DATA文件夹。

Link to SharedPreferences example tutorial

  1. Intent.putExtra(...)
  

每当您需要一个活动中的数据进入另一个活动中时,就可以在开始活动之间之间传递数据。 android中的Intent提供了这种便捷的方式,可以使用Extras在活动之间传递数据。

Link to Intent pass data through extras tutorial

答案 2 :(得分:0)

找到您的情况:

  1. 如果您要使用少量数据,例如姓名,电话 否或要关闭的应用程序要存储的值,然后使用共享的首选项。
  2. 如果您要使用对象列表(List<Object>)并且是 即使关闭了应用程序,您仍要存储大量数据,然后使用ROOM/SQLite
  3. 如果您要使用对象列表(List<Object>)并且是 少量数据,仅当应用程序处于 活动,然后使用静态对象。

我认为,您应该为从网络中检索到的位置和静态变量使用共享的首选项。

如果要使用设备的当前位置,请在获得设备后使用fusedLocationProviderClient,将其存储在共享首选项中。每当fusedLocationProviderClient提供您的位置信息时,请更新共享的首选项数据。

如果从网络中检索到的数据是对象,并且每次打开应用程序时都会更改并且是少量数据,则请使用 static 变量,否则请使用ROOM/SQLite

相关问题