1

我有FragmentActivity两个Fragments。通过Activity蓝牙接收数据并进行处理,然后在每一个上以不同的方式显示结果Fragment

例如,当我打开一个新Activity的设置时,以前Activity的所有数据(包含 的数据Fragments)都将被删除,因此我需要将其存储在onSaveInstanceState()Activity以保持状态。

此数据为 8 BitSet,大小为 16000。我是否应该将所有这些数据保存到Bundlein,onSaveInstanceState()否则会出现性能问题Activity,显着延迟启动时间?或者我应该把它保存到Fileor Database?退出应用程序后我不需要这些数据,我需要保存它以在Activity打开新应用程序时恢复状态并且我丢失了以前的Activity状态。

4

2 回答 2

1

例如,当我打开一个用于设置的新 Activity 时,前一个 Activity 中的所有数据都将被删除,因此我需要将其存储在 Activity 上的 onSavedInstance() 中。

听起来您正试图在 2 个活动之间共享数据。因此,您不会为此使用 onSaveInstance() 和 Bundle。

有几种方法可以在活动之间共享数据。这是关于 SO 的概述和深入讨论的内容。它们包括通过意图传递数据,使用 Application 对象设置全局可访问的数据,以及使用单例对象共享数据。

这是有关该主题的官方 android 文档:http: //developer.android.com/guide/faq/framework.html#3

就像我说的,哪种方式最好是有争议的。

于 2013-10-10T16:36:29.253 回答
1

BitSet大小为 16000 位的 s 大约有 2KB(+ 一些开销)。从大小的角度来看,您无需担心保存或读取数据时的延迟。

你应该写/读文件。使用文件,您可以将BitSets 以二进制形式存储,而无需以某种方式将此数据转换为另一种格式。Android 的标准文件块大小为 8KB,因此只会读取和写入一个块。

你应该仔细看看,是Activity的启动。16000 位可以是很多信息。根据您使用它的方式,构建和布局屏幕可能需要很长时间。提示是,更多地关注快速Activity设置,然后读/写几 KB 的数据。

于 2013-10-10T20:12:33.073 回答