【问题标题】:Android Static Variables and Shared PreferencesAndroid 静态变量和共享首选项
【发布时间】:2016-04-15 11:57:07
【问题描述】:

我正在编写一个 Android 应用程序,我从网络服务中为用户检索余额,并且用户能够登录和退出我的应用程序。

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

我需要知道几个片段中的平衡,当我在我的应用程序中浏览片段时我需要记住它。当我返回“我的帐户”片段余额值丢失时,我必须再次调用我的网络服务来检查它。

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

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

【问题讨论】:

  • 您可以使用 SharedPreference,但如果您想存储更多数据,请关注数据库。这是个好习惯

标签: android variables static fragment


【解决方案1】:

一个简单而优雅的解决方案是在 android 中使用一个非常简单的库 TinyDB,它只不过是对 Shared Preferences 的抽象。

您可以像这样在您的活动的onCreate() 方法中初始化它:

TinyDB tinydb = new TinyDB(this);

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

然后像这样使用它:

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

希望对你有帮助。

【讨论】:

    【解决方案2】:

    对于余额或用户名等单个值,您绝对应该使用SharedPreferenecesOnSharedPreferenceChangeListener

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

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

    或一些ORM

    【讨论】:

    • 感谢大家的建议。我只是按照建议将余额写在共享首选项中。
    【解决方案3】:

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

    1. 使用Shared Preference
    2. Store Data in a File
    3. 使用Sqlite

    This tutorial 将为您提供存储登录详细信息的想法。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-20
        相关资源
        最近更新 更多