【问题标题】:What's the closest equivalent to a Session / Cookie variable in Android?与 Android 中的 Session / Cookie 变量最接近的是什么?
【发布时间】:2010-08-04 14:27:21
【问题描述】:

例如,我希望我的用户能够单击“获取新报价”按钮,这将在数据库中开始一个新行以开始存储数据,但我不确定如何独立存储活动(或交叉活动)数据,例如行的 _id,当后续活动中的新数据可用时,我需要重新查询和更新行。这个机制叫什么名字,是怎么做的?

【问题讨论】:

    标签: java android sqlite session


    【解决方案1】:

    如何在单个应用程序中的活动/服务之间传递数据?

    这取决于您要共享的数据类型:

    原始数据类型 要在应用程序中的活动/服务之间共享原始数据,请使用 Intent.putExtras()。要传递需要持久化的原始数据,请使用Preferences 存储机制。

    非持久性对象 为了在短时间内共享复杂的非持久性用户定义对象,建议采用以下方法:

    android.app.Application 类

    android.app.Application 是需要维护全局应用程序状态的基类。可以从任何 Activity 或 Service 通过 getApplication() 访问它。它有几个生命周期方法,如果你在 AndroidManifest.xml 中注册它会被 Android 自动实例化。

    公共静态字段/方法

    使数据可跨活动/服务访问的另一种方法是使用公共静态字段和/或方法。您可以从应用程序中的任何其他类访问这些静态字段。要共享一个对象,创建对象的 Activity 会设置一个静态字段以指向该对象,而任何其他想要使用该对象的 Activity 只需访问该静态字段。

    对象弱引用的 HashMap

    您还可以将 WeakReferences 的 HashMap 用于具有 Long 键的对象。当一个 Activity 想要将一个对象传递给另一个 Activity 时,它只需将该对象放入映射中并通过 Intent Extras 将密钥(这是一个基于计数器或时间戳的唯一 Long)发送给接收者 Activity。接收者活动使用此键检索对象。

    单例类

    使用静态 Singleton 有很多好处,例如您可以引用它们而无需将 getApplication() 强制转换为特定于应用程序的类,或者麻烦地在所有应用程序子类上挂一个接口,以便您的各种模块可以参考那个接口。

    但是,静态的生命周期并不能完全由您控制;所以为了遵守生命周期模型,应用程序类应该在应用程序类的 onCreate() 和 onTerminate() 方法中初始化和拆除这些静态对象

    持久对象 即使应用程序似乎继续运行,系统也可能会选择终止其进程并稍后重新启动它。如果您有数据需要从一个活动调用持续到下一个活动调用,则需要将该数据表示为状态,当活动被告知它可能会消失时,该状态会被保存。

    对于共享复杂的持久性用户定义对象,推荐以下方法:

    Application Preferences
    Files
    contentProviders
    SQLite DB
    

    如果需要跨应用程序进程可能被终止的点保留共享数据,则将该数据放在持久性存储中,如应用程序首选项、SQLite DB、文件或内容提供程序。有关如何使用这些组件的更多详细信息,请参阅数据存储。

    【讨论】:

    • 好吧,如果应用程序只有手机所有者作为用户,这将起作用,但在我的情况下,我希望用户能够创建多个用户,因此会有多行数据。我将所有内容都存储在 SQLite 数据库中,它工作正常,但是当我恢复用户时,我想提取 ID 并将其从活动传递到活动。到目前为止,在 Intent 中传递 extra 是唯一有效的方法,只是不确定这是否正确或最有效的方式。
    • 好的,我更新了我的答案,你可以通过android.app.Application class
    • 我现在要离开办公室,所以没有时间检查什么有效或无效,但这是一个简洁的答案!非常感谢。我现在在寻找如何共享数据方面应该没有任何问题。
    猜你喜欢
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 2020-02-17
    相关资源
    最近更新 更多