在 Android 中列出完整消息线程数据的更有效方法

发布于 2025-01-03 03:53:16 字数 443 浏览 1 评论 0原文

我有一个 Android 应用程序,可以以线程对话格式显示用户短信;其中每个项目都显示对话中最新传入或传出消息的显示名称(如果有)、联系人照片、MSISDN 和时间戳/预告。

问题是,在 Android 中做到这一点实际上并不那么容易。直接查询线程返回的信息有限,因此时间戳等信息不可用。查询所有消息将返回我想要的所有数据,但随后我必须对所有数据进行排序,找到最新的消息、总计会话大小总计等。更复杂的是,草稿是自定义的(不是与所有其他消息一起保存的标准草稿),并且还必须添加到组合中。

后一种方法导致了一种可怕的方法,使用后者,我抓取所有内容,对所有内容进行排序,看到数据从 Cursor 到 HashMap 再到 List,最后使用适配器用于显示目的。这自然会导致严重的性能问题,用户必须等待几秒钟才能刷新屏幕。

所以我的问题是是否有更有效的方法来做到这一点,例如使用原始 SQL 查询消息,这不会对性能造成如此大的影响?

I have an Android app that displays user SMS's in a threaded conversation format; that is with each item showing the display name (if available), contact photo, MSISDN and timestamp/teaser for the most recent incoming or outgoing message in the conversation.

Problem is that it's actually not so easy to do this in Android. Querying the threads directly returns limited information, so timestamps, for example, are not available. Querying all messages will return all the data I want, but then I have to sort through it all, find the most recent message, tot-up conversation size totals and so on. As an added complication, drafts are custom (not the standard ones held with all the other messages) and also have to be added to the mix.

This latter approach has led to a monstrous approach, using the latter, whereby I grab everything, sort through it all which sees the data go from a Cursor to HashMap to a List and finally an adapter is used for display purposes. This naturally leads to a serious performance issue whereby the user has to wait a few seconds for the screen to refresh.

So the question I have is whether there is a more efficient way of doing this, for example querying the messages using raw SQL, that would not result in such a big hit on performance?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文