【问题标题】:Android: What happens when variables passed using intentAndroid:使用意图传递变量时会发生什么
【发布时间】:2012-09-06 02:02:53
【问题描述】:

我想知道我通过 Intent 将变量传递给另一个活动,并且该活动更改了该变量,它是否会反映在原始活动中而不传递回意图。 如果答案是否定的,那么使用应用程序使用全局变量然后传递意图并取回数据会更好。在我的程序中,我有 5 轮以上的活动,所有这些活动都需要访问一个类对象列表。 除上述以外的任何建议

【问题讨论】:

    标签: android android-intent


    【解决方案1】:

    创建您自己的Application 扩展来存储您应用的状态并在组成您应用的不同活动之间共享数据。 Application 充当整个应用程序的上下文,Android 保证在您的应用程序中始终只有一个实例。因此,它的工作方式类似于定义您自己的 Singleton,但使用 Application 将允许 Android 控制您共享数据的生命周期,并基本上为您进行内存管理。

    总结一下:

    1. 创建您自己的Application 子类。
    2. 在清单的应用程序标记中指定该类。

    在此之后,您将能够安全地将所有调用的结果转换为getApplication()(来自Activity 实例)和getApplicationContext()(来自任何Context 实例)到您在步骤#1 中定义的子类.这意味着您可以使用应用程序扩展中定义的任何 getter/setter 方法来存储/检索数据。

    Have a read here for more details.

    【讨论】:

    • 是不是比 Intent 传递数据更好?
    • 这取决于数据的用途。如果您在使数据集中可用(阅读:在不同活动之间共享数据和状态)之后,我肯定会使用Application 方法。将其视为您的应用程序的“模型”。如果您只需要本地或一次的数据,那么集中它是没有意义的,所以您不妨使用Intent。您的描述表明第一个适用于您的情况。
    • 我将中心数据作为类对象列表,其中还包含列表。现在当我使用 classAList.get(position).classBList 时。但是这样当原始被另一个活动更新时,它的引用不会改变。你能帮忙吗
    • 很抱歉,我无法按照您的描述进行操作。您最初的问题相当笼统,而您在此处的描述却非常具体。我建议你开始一个新的问答并提供代码 sn-ps 来澄清确切的问题。
    猜你喜欢
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 2015-09-21
    相关资源
    最近更新 更多