0

您好我们正在开发一个涉及多个屏幕的复杂应用程序。我们决定将常用活动保存在单独的应用程序 apk (commonScreen apk) 中,以便我们自己以及其他使用意图的人使用这些活动。

现在,我们需要一种通用的方式来存储和共享主应用程序和 commonScreen apk 中的活动之间的数据。

我们考虑将数据存储在 Application 对象中(扩展 Application)但是,当我们调用 startActivityForResult(commonScreenApkIntent),onActivityResult 时,我们可以看到 Application 中存在的数据已经消失(null),请参阅不要在应用程序中存储全局数据以解决使用它们的问题。

当涉及大数据时,使用首选项存储和检索每个活动中的数据是否是一种好方法?

请注意:我们要存储的数据量更多,基本上是应用程序按钮状态(禁用/启用)、值和配置。它可能会达到 1000 个值。

您能建议一种共享数据的方法吗?

4

3 回答 3

3

你考虑过使用SQLite吗?,ContentProviders可以让你的生活更轻松

于 2011-02-20T04:05:57.793 回答
1

我强烈建议您重新考虑您的应用程序的这种设计。单独的 .apks 中的代码通常应该能够独立运行,而不是与数据紧密耦合。如果这只是一个应用程序并且为了某种方便而将其拆分为 .apks,那么您将给自己带来各种其他问题 - 例如,如果用户卸载其中一个 .apks,清除其中的数据怎么办?其中之一,等等...?

如果您正在考虑使用 MODE_WORLD_READABLE,请停止并重新考虑。首先并不是说这允许安装在设备上的任何应用程序读取该数据。它通常还表明存在会咬你的应用程序之间存在严重依赖关系的设计问题。

于 2011-02-21T05:51:38.217 回答
0

我同意hackbod所说的。
(Dhamodharan 只是在宣传他的网站。)

您的问题“当涉及大数据时,使用偏好存储和检索每个活动中的数据是一种好方法吗?”<br>你的班)。
SharedPreferences 将结果存储在应用程序内的 XML 文件中。如果你想找到 XML 1) 运行你的应用程序。2) 转到 DDMS 3) 使用“文件资源管理器”,进入目录 Data-> data -> 你的包名 (com.example.whatever) -> shared_prefs。在那里你应该看到一个 xml 文档。

您的存储选项http://developer.android.com/guide/topics/data/data-storage.html
Shared Preferences= 将私有原始数据存储在键值对中。
内部存储 = 将私有数据存储在设备内存中。
外部存储 = 将公共数据存储在共享的外部存储上。
SQLite Databases= 将结构化数据存储在私有数据库中。
网络连接 = 使用您自己的网络服务器将数据存储在网络上。

我建议您使用 SQLite 存储您的数据。这样你就可以使用谷歌的海量数据中心。如果您有自己的服务器,请使用网络连接。外部存储将是我的第三个建议,因为外部存储器(SD 卡)往往比内部存储器(内部存储器 = 内部存储或共享首选项)有更多的空间,尤其是在低端手机上。例如,我有一个三星 Gio。内部存储器为 181MB。SD 卡可容纳近 2 GB。巨大差距!

如果你这样做是因为你有“多个屏幕”,那么你应该查看片段。片段允许您在多种屏幕尺寸(即手机和平板电脑)上控制一个应用程序。

这听起来像你有这一切倒退。普通的 Activity 应该有能力控制 Intent 被调用,而不是相反。您应该有一个通用的 Activity 来控制基于设备显示哪些 Fragment。然后在每个单独的片段对象中,您可以使用 SQLite 检索保存的状态。

于 2013-02-17T17:27:25.150 回答