【问题标题】:Handling objects in Android在 Android 中处理对象
【发布时间】:2012-12-14 07:40:22
【问题描述】:

我想在内存中保留一些对象,以便在我的应用程序的所有活动中进行操作,并且我还想在应用程序关闭时存储这些对象。哪种方法最有效?我能想到的一些可能性是:

1) 在所有活动中保留对象的本地副本,将它们序列化并通过意图传递它们。

2) 在所有活动中保留对象的本地副本,将它们序列化并在活动恢复和暂停时分别进行文件读取和写入。

3) 将它们设为静态变量,但我不知道在这种情况下何时进行文件读/写操作?这种方法可能会泄漏内存。

4) 使用 Application 对象并将我的对象定义为该对象中的变量。由于它有一个明确的生命周期,如活动,我可以相应地进行读/写。

【问题讨论】:

    标签: android android-intent android-file android-input-method android-memory


    【解决方案1】:

    我推荐您的方法 2。原因是没有“应用程序关闭”之类的东西。 Android 会尝试将其保存在内存中,直到内存用于其他目的。然后您的应用程序的进程被简单地杀死,您不会调用任何回调。

    如果您在必要时小心加载和存储对象,可以使用单例或 Application 对象来缓存对象。然而,这也意味着,用于它们的内存只有在应用进程终止时才会被回收。

    【讨论】:

    • Henry 和@Evos:请看我刚刚添加的第四个选项
    • 请注意,onTerminate 不会在生产 Android 设备上调用。所以没有方便的地方存放物品。
    【解决方案2】:

    这取决于您的数据。在某些情况下,所有方法都很好。

    我认为你有两个选择:

    • 将数据保存在 sqlite 中。它比文件更容易,速度更快。当活动开始时,从 db 请求所需的数据并显示它。 (如果你真的想使用文件)
    • 创建一个单调类来存储数据。数据将加载到内存中,您可以非常快速地访问它。当数据更改时,将其保存到 sqlite 或文件中。谷歌“在活动之间共享数据”

    【讨论】:

    • 请看我刚刚添加的第四个选项
    • 您的第四个选项就像我的第二个选项一样,您可以扩展应用程序类并添加所需的数据管理功能。您可以在任何活动中使用它们。 google 有很多例子。
    猜你喜欢
    • 2011-06-23
    • 2014-05-05
    • 2015-12-11
    • 2012-06-06
    • 1970-01-01
    • 2017-10-26
    • 2011-09-12
    • 2017-10-29
    相关资源
    最近更新 更多