背景:
我正在实现一个从 Web 服务中读取电影信息的应用程序。该 Web 服务返回有关每部电影的多个信息(标题、日期、海报 URL、导演、演员等)。
该 Web 服务支持分页,因此电影会以100个为一组加载。
实现:
我们的想法是展示一个包含所有海报的网格视图,当用户向下滚动时自动请求更多内容。
当单击项时,用户会导航到详细查看所选电影的相册,并使用 ViewPager 滚动查看详情。
因此,我们的想法是将在网格中检索到的电影集合传递给“DetailedGalleryActivity”。
更新:还需要在用户离开片段时保存状态,以处理片段生命周期。您可以启用“开发者选项:不保留活动”来测试它
问题:
我的第一种方法是将电影集合序列化为 JSON,并将其作为字符串附加到 Activity 中。但是,由于电影列表很大,如果用户在网格中滚动了很多次,则该 JSON 的大小非常大,Bundle 无法处理(请参见最大字符串数据的Max size of string data),会导致运行时异常。
我已经查看了一些关于在启动详细信息活动之前在 SharedPreferences 或其他持久性存储中保存数据并从详细信息中访问它的答案。我认为这种解决方案很奇怪,因为它忽略了使用自定义和手工制作的解决方案在活动之间传递数据的机制。
如何解决这个问题呢?