【问题标题】:Android: How to access data across all Activites?Android:如何访问所有活动的数据?
【发布时间】:2012-08-10 20:47:44
【问题描述】:

我正在寻找一种可能性,以一种所有 Activites 都可以访问它的方式存储用户 ID(登录后收到)。
如果我理解正确,SharedPreference 仅适用于一个特定的 Acitivty。

我要全面保存ID有哪些可能?

您好, 欧兹

【问题讨论】:

  • 没有。 SharedPreferences 适用于所有活动 :)
  • 真的吗?那我可能做错了什么?!如果我想在秒Activity中访问存储的数据,我是否需要处理任何事情?

标签: android memory storage


【解决方案1】:

放数据:

SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
editor.putString("user_id", "THE USER ID HERE");
editor.commit();

要检索数据:

SharedPreferences prefs = getPreferences(MODE_PRIVATE); 
String userID = prefs.getString("user_id", null);

如果用户 id 是一个数字,您可以使用 putInt 或任何原始数据。

【讨论】:

  • 我已经这样做了。但是我怎样才能从另一个活动中访问存储的信息呢?
  • 我想我做错了什么...如何在几秒钟内访问存储的数据活动?我只是在使用:getPreferences(MODE_PRIVATE).getString("id", "not there") 而我只是得到“不存在”
【解决方案2】:

在整个应用程序中都可以访问 SharedPreferences。 如果您只需要为应用程序的运行时存储数据,只需将其声明为 public static,您就可以从任何地方访问它。

【讨论】:

    【解决方案3】:
    • 选项 1:创建 singleton 来保存您的数据(首选)
    • 选项 2:覆盖 Application 并使用上下文访问数据

    这些用于非持久性的应用程序状态,这意味着它们存储在内存中,因此一旦您的应用程序退出就会丢失。

    对于持久存储,请使用其中之一。

    有关更多想法,请参阅 Android 文档中的 Storage Options 文章。

    【讨论】:

    • 我经常对静态的正确使用感到困惑...如果我要使用单例模式,每个用户都有自己的具有个人用户 ID 的对象吗?我假设所有用户都只有一个用户 ID,因为是静态的?!
    • @oetzi 如果你使用单例,每个虚拟机(或应用程序,如果你愿意的话)只有一个实例。因此,如果您需要存储多个用户 ID,请将其设为 List
    • 好的,谢谢,至少我的一般假设是正确的 ;-) 因为我想精确地使用用户 ID 来识别当前用户,所以使用包含许多不同用户 ID 的静态列表似乎不是正确的方式。如果可以在不同的活动中使用 SharedPreferences,我想使用它们。你能看看我上面(或下面)的评论。也许我以错误的方式使用它们?!
    • @oetzi 虽然我不认为你完全理解单例方法,但对于SharedPreferences, see the Android docs 上的文档。应该有你需要知道的一切。
    猜你喜欢
    • 2018-09-28
    • 2012-02-12
    • 2023-01-30
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多