私のアプリケーションには、メッセージのリストを含むテーブルを持つ 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
私の質問は次のとおりです。ユーザーがリストアクティビティを表示していて、新しいメッセージがデータベースに追加された場合、この変更を反映させるにはどうすればよいですか(新しく追加されたメッセージを表示する)
メッセージがデータベースに追加されたときに、サービスがブロードキャストを開始するようにすることを検討しました。次に、アクティビティがこのブロードキャストを受信したら、クエリを再度実行します。fetchAllMessages()
ただし、特にメッセージが頻繁に追加される可能性があるため、メッセージが1つしか追加されていないことがわかっている場合は効率が悪いのではないかと心配しています