我有两个FragmentActivity
的{{1}}。 Fragments
通过蓝牙接收数据并对其进行处理,然后在每个Activity
上以不同的方式显示结果。
当我打开例如新Fragment
设置时,前一个Activity
(包含Activity
的数据)中的所有数据都将被删除,因此我需要将其存储在{ {1}} Fragments
保持状态。
此数据为8 onSaveInstanceState()
,大小为16000.我是否应将所有这些数据保存到Activity
中的BitSet
,否则我的性能问题会延迟Bundle
启动时间显着?或者我应该将其保存为onSaveInstanceState()
或Activity
?退出应用程序后,我不需要这些数据,我需要保存它以恢复打开新File
并恢复之前的Database
状态时的状态。
答案 0 :(得分:1)
当我打开一个新的Activity来设置来自的所有数据时 删除上一个活动,所以我需要将其存储 活动上的onSavedInstance()。
听起来你正试图在两个活动之间共享数据。所以,你不会使用onSaveInstance()&捆绑这个。
有几种方法可以在活动之间共享数据。这是SO已经概述和深入讨论的内容。它们包括通过intent传递数据,使用Application对象设置全局可访问数据,以及使用单例对象共享数据。
这是关于这个主题的官方android文档: http://developer.android.com/guide/faq/framework.html#3
就像我说的那样,哪种方式最好是有争议的。
答案 1 :(得分:1)
BitSet
大约有2KB(+一些开销)。从大小的角度来看,您无需担心保存此数据或读取数据时的延迟。
您应该写/读文件。使用文件,您可以以二进制形式存储BitSet
,而无需以其他格式以某种方式转换此数据。 Android的文件标准块大小为8KB,因此只能读写一个块。
你应该仔细看看,是活动的启动。 16000位可以是很多信息。根据您使用它的方式,构建和布局屏幕可能需要很长时间。提示更多地关注快速Activity
设置,然后读取/写入几KB数据。