gpt4 book ai didi

java - 如何在 Activity 之间传递大型集合(主从流程)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:38:12 25 4
gpt4 key购买 nike

背景:

我正在实现一个从网络服务读取电影信息的应用程序。该 Web 服务返回有关每部电影的多个信息(标题、日期、海报 URL、导演、 Actor 等)。

该 Web 服务支持分页,因此电影以 100 部为一组加载。

实现:

想法是显示一个包含所有海报的网格。当用户向下滚动时自动请求更多项目。

enter image description here

当一个项目被点击时,用户导航到带有所选电影的详细 View 的画廊,允许使用 ViewPager 滚动浏览详细信息。

enter image description here

所以想法是将网格中检索到的电影集合传递给“DetailedGalleryActivity”。

更新:还需要在用户离开 fragment 时保存状态,以便处理 fragment 生命周期。您可以启用开发人员选项对其进行测试:不保留 Activity

问题

我的第一个方法是在 json 中序列化电影集合,并将其作为 String extra 传递给 Activity。

但由于电影列表很大,如果用户在网格中滚动很多,json 的大小对于 Bundle 来说非常大(参见 Max size of string data),导致运行时异常。

我检查了一些关于在启动详细信息 Activity 之前将数据保存在 SharedPreferences 或其他持久性存储中然后从详细信息访问它的答案。我觉得这个解决方案很奇怪,因为它忽略了使用自定义和手工解决方案在 Activity 之间传递数据的机制。

解决这个问题的最佳方法是什么?

最佳答案

我也不确定这是否是个好建议。

创建另一个类并添加一个静态方法,我们将其命名为 MovieUtil。

//样本

private class MovieUtil {
private static List<Movies> movies;
public static List<Movies> getMovies();//getter
public static void setMovies(List<Movie> movies);//setter
}

在启动 DetailedGalleryActivity 之前,在 MovieUtil.setMovies() 上设置电影列表

然后在 DetailedGalleryActivity 的 oncreate 上使用 MovieUtil.getMovies() 初始化列表

注意:您可以在关闭 DetailedGalleryActivity 时清除 movieutil 上的电影列表。

关于java - 如何在 Activity 之间传递大型集合(主从流程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32243852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com