我想在内存中保留一些对象在我的应用程序的所有活动的操作,我也想在应用程序关闭时存储这些对象。哪一种方法最有效?我能想到的一些可能性是:
1)在所有活动中保持对象的本地副本,序列化它们并通过intent传递它们。
2)保留所有活动对象的本地副本,并对其进行序列化,在活动恢复和暂停时分别进行文件读写。
3)使它们成为静态变量,但我不知道在这种情况下何时做文件读/写操作?此方法可能会泄漏内存。
4)使用Application对象并将我的对象定义为该对象中的变量。因为它有一个明确的生命周期,像活动,我可以做相应的读/写。
我推荐你的方法2。原因是没有"应用程序关闭"这样的东西。Android试图将其保存在内存中,直到需要内存用于其他目的。然后你的应用程序的进程就会被杀死,你不会被调用任何回调。
singleton或Application
对象可以用来缓存对象,如果你在必要的时候小心地加载和存储它们的话。然而,这也意味着,只有当应用程序进程终止时,它们使用的内存才会被回收。
这取决于你的数据。在某些情况下,所有的方法都是好的。
我认为你有两个选择:
- 将数据保存在sqlite中。它比文件更容易,也更快。当活动启动时,从数据库请求所需的数据并显示它。(如果你真的想使用文件) 创建一个单例类来存储数据。数据将加载到内存中,您可以非常快速地访问它。当数据更改时,将其保存到sqlite或文件中。google"活动之间共享数据"