我的应用程序中有一个照片库,与Facebook照片不太相似。我有两个基本观点:
PhotoGalleryActivity
是按时间顺序显示的无穷无尽的照片列表。点击它会带您进入详细视图。
PhotoDetailView
基本上是照片的视图寻呼机,对于每张照片,它还会显示上传它的用户。点击该用户,您会转到另一个PhotoGalleryActivity
列出用户上传的所有照片。
要显示PhotoDetailActivity
,我需要将PhotoGalleryActivity
中的照片列表传递给它。照片对象基本上只是一个URL列表和一个用户对象。
我研究了不同的可能解决方案,但它们都不适合我的账单。以下是我找到的以及为什么他们不会工作(如果我错了请纠正我):
意图:这没有用,因为数据可能会变大(1mb是通过意图传递数据的限制)。我可能需要传递10,000张照片或100,000张照片。因此,我甚至无法在方向改变时保存它(我错了吗?)。
Singleton +代码:由于用户可以继续点击多个PhotoGalleryActivity
,因此我可以使用代码,以便PhotoDetailActivity
可以使用PhotoGalleryActivity
标记获取照片列表{1}}通过意图。但是当应用程序被杀死时会出现问题。单身人士丢失了数据,所以我无法可靠地做到这一点。 (我觉得我可能会错过这个用例的解决方法)。
数据库:我可以将它们保存在数据库中,但这很难维护,因为我们说第一个PhotoGalleryActivity
显示所有用户的照片。然后,我点击一张照片,点击上传照片的用户,然后开始浏览该用户照片。现在当我回到第一个PhotoGalleryActivity
时,按时间顺序,数据库中的最后一张照片现在是该用户的最后一张照片,因此我的数据变得污染了。 (我可以想到这方面的解决方法,但感觉它很快就会变得混乱)。
我希望那里有人有这方面的经验并且有解决方案的想法。
答案 0 :(得分:0)
也许您可以使用Service,让活动绑定相同的Service并在Service中保存数据对象,然后活动可以通过Service加载相同的数据对象。
我认为服务没有数据大小限制,比单例更可靠,比数据库更灵活。
答案 1 :(得分:0)
我认为最好的方法是使用数据库。它将维护数据并且操作相对较快。您可以使用不同类型的ORM库(例如Realm)来帮助您更轻松地连接数据库。您将能够轻松地查询每个页面中所需的任何数据(我假设您将使用图库的查看寻呼机。
答案 2 :(得分:0)
我建议您在app文件夹中创建一个文本文件,其中包含要发送到下一个Activity的Uri的照片,然后在下一个Activity中检索它们。 如果将来您不希望用户访问该文本文件,您可以使用自己的算法轻松加密它,它不会花费太多时间或精力来实现此解决方案。