【发布时间】:2013-01-16 14:00:21
【问题描述】:
我正在构建一个新的 android 应用程序,它通过不同的活动使用来自服务器的数据。
目前我有 2 个活动,主要的活动连接到服务器并使用来自服务器的数据创建单例对象(所有活动共享)。
显然我有一个数据的实例保存在单例类中,并从静态方法中获取对象。
我知道这不是在活动之间实现共享数据的最佳方式 - 我可以通过意图传递它们(但我计划创建更多使用相同数据的 3-4 个活动,所以为什么要在何时传递它们?您可以将它们放在应用程序全局的静态上下文中)。
这个实现让我陷入了这个问题: 当用户在第二个活动中切换到另一个应用程序,并且我的应用程序在后台停留了一段时间时,android 会释放应用程序使用的内存,当返回到它时,在使用其中一个字段时出现空指针异常单例对象!
我通过返回主活动(如果对象为空)来重新创建数据来解决问题,但这会使活动在每次被销毁时重新连接(这不是最佳的,因为服务器上的数据没有太大变化)。 我知道我必须保存服务器数据 onDestroy 并在每次返回活动时重新创建对象,但这必须发生在每个活动上,数据大约 4-5KB 意味着它需要写入文件,并且解析需要时间(访问手机SD卡)。
我开始考虑使用 Parcelable 对象通过 Intent 共享数据 - 我认为 android 可以自动以最佳方式保存和恢复 Intent 的数据。 (参考:http://bimbim.in/post/2010/09/27/Android-Passing-object-from-one-activity-to-another.aspx)
问题是,意图会解决我的问题吗? 还有其他方法吗?更好、更快的方法?
谢谢!
【问题讨论】:
标签: android memory-management android-activity nullpointerexception