gpt4 book ai didi

android - 对于从后台线程定期更新并跨多个 Activity 维护的 ListView,什么是好的方法?

转载 作者:行者123 更新时间:2023-11-29 02:14:58 25 4
gpt4 key购买 nike

首先是我正在寻找的一些背景信息和参数。

  • 该应用程序有多个 Activity 需要访问一个列表。我正在使用 Application类,以便在所有 Activity 中维护此列表。
  • 列表是自定义对象的列表。
  • 有一个 Activity 有一个 ListView 来显示此列表中的项目。
  • 还有其他 Activity 需要能够访问此列表,但不显示 ListView。
  • 可以对列表进行排序或过滤。
  • 列表可以随时从后台线程更新(添加、删除、更新内容),这些更改应在查看列表时立即反射(reflect)出来。

到目前为止,我的方法是通过应用程序中的方法管理列表,包括管理列表的任何更新。如果用户当前在其中包含 ListView 的 Activity 中,则它正在监听列表的更新。当它听到更新时,它会从应用程序复制列表并将其发送到 ListViews 自定义 ArrayAdapter。 ArrayAdapter 获取此列表副本并替换基本列表,对其调用当前排序和过滤器,然后替换列表中实际显示的列表并调用 notifyDataSetChanged()。这一切都是为了避免如果列表从 UI 线程更改或没有调用 notifyDataSetChanged() 时适配器会遇到任何问题。

这一切都很好,问题是使用这种方法有同一个列表的多个副本,这会降低该列表在其他地方的可用性并造成不必要的内存使用。如果在特定时间间隔内有大量更新,它还会创建大量复制。

所以我想看看是否还有其他人有任何方法可以让 ListView 直接引用主列表源,但仍能避免从 UI 线程更新时出现问题?

谢谢

最佳答案

我不知道我的方法是否更好。我创建了一个适配器,其中包含项目的 LinkedList。我保持对该适​​配器的静态引用,当需要更新时,其他 Activity 等。更新列表并调用 adapter.notifyDataSetChanged()

我认为这只使用了一份数据。

关于android - 对于从后台线程定期更新并跨多个 Activity 维护的 ListView,什么是好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4785938/

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