Android静态变量和共享首选项

时间:2016-04-15 11:57:07

标签: android variables static fragment

我正在编写一个Android应用程序,我从Web服务中检索用户的余额,用户可以登录和退出我的应用程序。

当应用程序启动时,我会检查共享首选项以查看用户是否已登录或注销。在正确登录时,我将共享pref boolean更新为true,并在用户注销时将其设置为false。

我需要知道几个片段中的平衡,当我通过应用程序中的片段导航时,我需要记住它。当我返回“我的帐户”片段时,余额值将丢失,我必须再次调用我的Web服务进行检查。

这是使用字符串共享pref的最佳方式,并在应用程序启动或余额发生变化时更新它。或者我最好在我的主要活动中使用静态变量,当用户导航到“我的帐户”片段时可以引用该变量。

是否有可能过度使用共享偏好?

4 个答案:

答案 0 :(得分:1)

一个简单而优雅的解决方案是在android中使用一个非常简单的库TinyDB,这只不过是对共享首选项的抽象。

您可以在活动的onCreate()方法中对其进行初始化,如下所示:

TinyDB tinydb = new TinyDB(this);

在片段中,只需将this替换为getActivity

然后像这样使用它:

tinydb.putString("userName", "john");
String currentUser = tinydb.getString("userName");

希望它有所帮助。

答案 1 :(得分:0)

有三种方法可以存储您的登录详细信息。

  1. 使用Shared Preference
  2. Store Data in a File
  3. 使用Sqlite
  4. This tutorial会为您提供存储登录详细信息的建议。

答案 2 :(得分:0)

对于单个值,例如余额或用户名,您一定要使用SharedPreferenecesOnSharedPreferenceChangeListener

对于平衡操作等结构化数据,您绝对应该使用数据库:

  • SQLite的
  • 领域(noSQL)
  • StorIO (SQLite包装器)

或某些 ORM

答案 3 :(得分:0)

您应该将数据存储在SharedPreferences而不是全局变量中,因为当应用程序崩溃时,静态全局变量在不同时间更新的数据将丢失,其中的默认数据仍然存在。