Android在多个应用程序之间共享数据(状态、值、配置);活动

Android在多个应用程序之间共享数据(状态、值、配置);活动,android,android-preferences,Android,Android Preferences,您好,我们正在开发一个涉及多个屏幕的复杂应用程序。 我们决定将公共活动保存在单独的应用程序apk(commonScreen apk)中,以便我们自己和其他使用意图的人都可以使用这些活动 现在,我们需要一种在主应用程序和commonScreen apk中的活动之间存储和共享数据的通用方法 我们考虑将数据存储在应用程序对象中(扩展应用程序) 但是,当我们称之为startActivityForResult(CommonScreenapkinent)时, 在ActivityResult上,我们可以看到应

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

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

我们考虑将数据存储在应用程序对象中(扩展应用程序) 但是,当我们称之为startActivityForResult(CommonScreenapkinent)时, 在ActivityResult上,我们可以看到应用程序中的数据已经消失(null) 有关使用它们的问题,请参阅

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

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


你能建议一种分享数据的方法吗?

你考虑过使用吗?

能让你的生活更轻松吗?

你考虑过使用吗?能让你的生活更轻松吗?

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


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

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


如果您正在考虑使用MODE_WORLD_READABLE,请停止并重新考虑。首先,这并不意味着允许设备上安装的任何应用程序读取该数据。它通常也表明了一个设计问题,即应用程序之间的依赖性很差,这会对你造成伤害。

我同意hackbod的说法。
(Dhamodharan正在推广他的网站。)

您的问题“当涉及大数据时,使用首选项存储和检索每个活动中的数据是一种好方法吗?”
我的答案=否。首选项应用于小的原始数据(即=每个学生在班上的成绩)。
SharedReferences将结果存储在应用程序内的XML文件中。如果你想找到XML,请运行你的应用程序。2) 使用“文件资源管理器”进入DDMS 3),进入目录Data->Data->your package name(com.example.whatever)->shared\u prefs。您应该会看到一个xml文档

您的存储选项:
共享首选项=以键值对存储私有基元数据。
内部存储=在设备内存中存储私有数据。
外部存储=在共享外部存储上存储公共数据。
SQLite Databases=将结构化数据存储在专用数据库中。
网络连接=使用自己的网络服务器在web上存储数据

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

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


听起来你好像把一切都颠倒了。公共活动应该具有控制意图的能力,而不是相反。您应该有一个公共活动来控制基于设备显示哪些片段。然后在每个单独的片段对象中,您可以使用SQLite检索保存的状态。

我同意hackbod的说法。
(Dhamodharan正在推广他的网站。)

您的问题“当涉及大数据时,使用首选项存储和检索每个活动中的数据是一种好方法吗?”
我的答案=否。首选项应用于小的原始数据(即=每个学生在班上的成绩)。
SharedReferences将结果存储在应用程序内的XML文件中。如果你想找到XML,请运行你的应用程序。2) 使用“文件资源管理器”进入DDMS 3),进入目录Data->Data->your package name(com.example.whatever)->shared\u prefs。您应该会看到一个xml文档

您的存储选项:
共享首选项=以键值对存储私有基元数据。
内部存储=在设备内存中存储私有数据。
外部存储=在共享外部存储上存储公共数据。
SQLite Databases=将结构化数据存储在专用数据库中。
网络连接=使用自己的网络服务器在web上存储数据

我建议您使用SQLite将数据存储在中。这样你就可以使用谷歌的海量数据中心。如果您有自己的服务器,请使用网络连接。外部存储将是我的第三个建议,因为外部存储器(SD卡)往往有很多