在我的应用程序中,有一个SqlLite数据库,其中包含一个包含消息列表的表。每封邮件都有一个“发件人”和一个“正文”。
我有一个包含ListView
的活动,它只是使用游标和游标适配器显示数据库中的所有消息。以下是相关代码:
Cursor cursor = mDbAdapter.fetchAllMessages();
String[] from = { MessageDbAdapter.KEY_SENDER, MessageDbAdapter.KEY_BODY };
int[] to = { R.id.TextSender , R.id.TextMessage };
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.messagerow, cursor, from, to);
mMessageList.setAdapter(adapter);
在我的应用程序中,有一个在后台运行的服务可以随时向数据库插入新消息(用户可能会也可能不会查看列表活动)。
我的问题如下:如果用户正在查看列表活动并且新消息已添加到数据库,我该如何使ListView
反映此更改(显示新添加的消息)
我已经考虑过在将消息添加到数据库时使服务触发广播。然后,当活动接收到此广播时,再次执行查询。但是,当我知道只添加了1条消息时,我担心fetchAllMessages()
效率低下,特别是因为消息可能经常被添加