我正在编写一个Android应用程序,我从Web服务中检索用户的余额,用户可以登录和退出我的应用程序。
当应用程序启动时,我会检查共享首选项以查看用户是否已登录或注销。在正确登录时,我将共享pref boolean更新为true,并在用户注销时将其设置为false。
我需要知道几个片段中的平衡,当我通过应用程序中的片段导航时,我需要记住它。当我返回“我的帐户”片段时,余额值将丢失,我必须再次调用我的Web服务进行检查。
这是使用字符串共享pref的最佳方式,并在应用程序启动或余额发生变化时更新它。或者我最好在我的主要活动中使用静态变量,当用户导航到“我的帐户”片段时可以引用该变量。
是否有可能过度使用共享偏好?
答案 0 :(得分:1)
一个简单而优雅的解决方案是在android中使用一个非常简单的库TinyDB,这只不过是对共享首选项的抽象。
您可以在活动的onCreate()
方法中对其进行初始化,如下所示:
TinyDB tinydb = new TinyDB(this);
在片段中,只需将this
替换为getActivity
。
然后像这样使用它:
tinydb.putString("userName", "john");
String currentUser = tinydb.getString("userName");
希望它有所帮助。
答案 1 :(得分:0)
有三种方法可以存储您的登录详细信息。
This tutorial会为您提供存储登录详细信息的建议。
答案 2 :(得分:0)
对于单个值,例如余额或用户名,您一定要使用SharedPrefereneces和OnSharedPreferenceChangeListener。
对于平衡操作等结构化数据,您绝对应该使用数据库:
或某些 ORM 。
答案 3 :(得分:0)
您应该将数据存储在SharedPreferences而不是全局变量中,因为当应用程序崩溃时,静态全局变量在不同时间更新的数据将丢失,其中的默认数据仍然存在。