【发布时间】:2020-04-18 13:17:01
【问题描述】:
我正在开发一个聊天应用程序,正如标题所说,我想从后台线程访问 adapter 或 ListView 以向其中添加新元素(消息)而不创建新的 ListView 和适配器实例因为这会导致刷新ListView 并在用户观看底部的最后一条消息时再次向上滚动,如果我尝试从我的聊天活动中将我的适配器设置为static,它会告诉我它可能会导致内存泄漏,因为适配器正在使用上下文。
1- 有没有办法通过从我的后台线程创建一个新实例来更新ListView 适配器,而无需在更新或删除我之前的ListView 消息时滚动回第一个?
2- 如果不是,那么如果我尝试在适配器中使用getApplicationContext() 以免导致泄漏,它会正常工作吗?因为从这个主题我读到应用程序上下文不会膨胀布局
https://www.aurigait.com/blog/Best+practices-of-appropriate-Context-in-Android/
【问题讨论】:
-
为什么不切换回主线程?例如View.post(Runnable)
-
我实际上是这样做的,因为我必须这样做才能访问 UI 元素并将 Chat.adapter.add() 调用放入其中,但正如您所见,适配器是静态的。
标签: android listview adapter android-adapter android-context