1

我正在构建一个新的 android 应用程序,它通过不同的活动使用来自服务器的数据。

目前我有 2 个活动,主要的活动连接到服务器并使用来自服务器的数据创建单例对象(为所有活动共享)。

显然我有一个保存在单例类中的数据实例,并从静态方法中获取对象。

我知道这不是在活动之间实现共享数据的最佳方式 - 我可以通过意图传递它们(但我计划创建更多使用相同数据的 3-4 个活动,所以为什么在你可以拥有的时候传递它们它们在应用程序的全局静态上下文中)。

这个实现让我遇到了这个问题:当用户在第二个活动中切换到另一个应用程序时,我的应用程序在后台停留了一段时间,android 释放了应用程序使用的内存,当返回到它时,我得到 null使用单例对象的字段之一时出现指针异常!

我通过返回主活动(如果对象为空)来重新创建数据来解决问题,但这会使活动在每次被销毁时重新连接(这不是最佳的,因为服务器上的数据变化不大)。我知道我必须在每次返回活动时保存服务器数据 onDestroy 并重新创建对象,但这必须发生在每个活动上,数据大约 4-5KB 意味着它需要写入文件,并且解析需要时间(访问手机SD卡)。

我开始考虑使用 Parcelable 对象通过意图共享数据 - 我认为 android 可以自动并以最佳方式保存和恢复意图的数据。(参考:http ://bimbim.in/post/2010/09/27/Android-Passing-object-from-one-activity-to-another.aspx )

问题是,意图会解决我的问题吗?还有其他方法吗?更好、更快的方法?

谢谢!

4

1 回答 1

1

我确信这个问题与活动的生命周期有关。当 Android 杀死你的 Activity 时,你可以使用主 Activity 的onRestoreInstanceState()方法将数据保存为一个包,因此当再次重新创建 Activity 时,你可以在 Activity 的onCreate()方法上恢复数据(参见此处作为示例)。您也可以SharedPreferences在您的活动onResume()onPause()方法中使用。使用这两种方法,想法是相同的:您将对象/数据临时保存在磁盘上,然后再将其恢复。

于 2013-01-16T14:19:49.393 回答