我最关心性能问题,不希望用户等待进展。
我有一个chatActivity,我在这里展示了一个ListView。
这里我发送一个chatMessage
Chats chat = new Chats(chatBox.getText().toString(),Chats.TYPE_MINE, dt.format(now));
chat.personId = chatee.getMyId();
chat.isDelievered = Chats.DELIEVERED_NONE;
chats.add(chat);
mAdapter.notifyDataSetChanged();
请注意,Chat delievery现在设置为NONE。所以基本上消息被添加到聊天列表中,即使它尚未发送。
现在回到主题这里是正在发生的事情 在我执行此操作时发送消息需要几秒钟
boolean bool = sendMessage(m);
if (bool)
chatee.isDelievered = Chats.DELIEVERED_DONE; (MESSAGE SENT)
if (chatee.isDelievered == Chats.DELIEVERED_DONE)
{
app.mDbHelper.saveMessage(chatee); // SAVING TO DATABASE
Intent i = new Intent(Constants.REFRESH_NOTIF).putExtra("refresh",Constants.REFRESH_NOTIF);
context.sendBroadcast(i);
}
它会向活动发送广播。
现在问题就在于此。 广播呼叫此功能
public void callUIMethodForRefresh(Intent intent)
{
String ref = intent.getStringExtra("refresh");
if (ref == null)
{
}
else if (ref.equals(Constants.REFRESH_NOTIF))
{
}
}
这里我很困惑如何重置添加到我的列表中的前一个聊天对象。 需要注意的是,我可以以非常快的速度发送消息,并且可以针对旧消息调用刷新,而已经键入了新消息。
这可能是避免性能问题的最佳策略。
答案 0 :(得分:2)
我建议调查ContentProviders和Loaders(特别是CusorLoader)。将它们与CursorAdapter相结合,您可以使用ContentProvider插入/删除/更新您的sqlite数据库,并通知您的加载器重新加载它的数据集并更新CursorAdapter / ListView。