我应该将这些数据存储在onSaveInstanceState()Bundle中吗?

时间:2013-10-10 16:21:35

标签: android android-intent

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

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

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

2 个答案:

答案 0 :(得分:1)

  

当我打开一个新的Activity来设置来自的所有数据时   删除上一个活动,所以我需要将其存储   活动上的onSavedInstance()。

听起来你正试图在两个活动之间共享数据。所以,你不会使用onSaveInstance()&捆绑这个。

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

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

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

答案 1 :(得分:1)

大小为16000位的

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

您应该写/读文件。使用文件,您可以以二进制形式存储BitSet,而无需以其他格式以某种方式转换此数据。 Android的文件标准块大小为8KB,因此只能读写一个块。

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