0

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

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

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

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

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

4

2 回答 2

2

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

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

于 2012-12-29T07:33:24.050 回答
0

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

我认为你有两个选择:

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