如何在活动之间传递大数据?

时间:2016-03-31 01:35:13

标签: android android-intent

我的应用程序中有一个照片库,与Facebook照片不太相似。我有两个基本观点:

  • PhotoGalleryActivity是按时间顺序显示的无穷无尽的照片列表。点击它会带您进入详细视图。

  • PhotoDetailView基本上是照片的视图寻呼机,对于每张照片,它还会显示上传它的用户。点击该用户,您会转到另一个PhotoGalleryActivity列出用户上传的所有照片。

要显示PhotoDetailActivity,我需要将PhotoGalleryActivity中的照片列表传递给它。照片对象基本上只是一个URL列表和一个用户对象。

我研究了不同的可能解决方案,但它们都不适合我的账单。以下是我找到的以及为什么他们不会工作(如果我错了请纠正我):

  • 意图:这没有用,因为数据可能会变大(1mb是通过意图传递数据的限制)。我可能需要传递10,000张照片或100,000张照片。因此,我甚至无法在方向改变时保存它(我错了吗?)。

  • Singleton +代码:由于用户可以继续点击多个PhotoGalleryActivity,因此我可以使用代码,以便PhotoDetailActivity可以使用PhotoGalleryActivity标记获取照片列表{1}}通过意图。但是当应用程序被杀死时会出现问题。单身人士丢失了数据,所以我无法可靠地做到这一点。 (我觉得我可能会错过这个用例的解决方法)。

  • 数据库:我可以将它们保存在数据库中,但这很难维护,因为我们说第一个PhotoGalleryActivity显示所有用户的照片。然后,我点击一张照片,点击上传照片的用户,然后开始浏览该用户照片。现在当我回到第一个PhotoGalleryActivity时,按时间顺序,数据库中的最后一张照片现在是该用户的最后一张照片,因此我的数据变得污染了。 (我可以想到这方面的解决方法,但感觉它很快就会变得混乱)。

我希望那里有人有这方面的经验并且有解决方案的想法。

3 个答案:

答案 0 :(得分:0)

也许您可以使用Service,让活动绑定相同的Service并在Service中保存数据对象,然后活动可以通过Service加载相同的数据对象。

我认为服务没有数据大小限制,比单例更可靠,比数据库更灵活。

答案 1 :(得分:0)

我认为最好的方法是使用数据库。它将维护数据并且操作相对较快。您可以使用不同类型的ORM库(例如Realm)来帮助您更轻松地连接数据库。您将能够轻松地查询每个页面中所需的任何数据(我假设您将使用图库的查看寻呼机。

答案 2 :(得分:0)

我建议您在app文件夹中创建一个文本文件,其中包含要发送到下一个Activity的Uri的照片,然后在下一个Activity中检索它们。 如果将来您不希望用户访问该文本文件,您可以使用自己的算法轻松加密它,它不会花费太多时间或精力来实现此解决方案。