定期更新聊天室的ListView

时间:2015-02-19 09:40:15

标签: android web-services

我开发了一个带聊天功能的Android应用程序,我想每隔10秒钟联系一次我的API来检索新邮件并在我的活动的ListView中显示它们。

如果我使用服务来检索消息,我无法更新ListView,因为服务和活动不在同一个上下文中,因此服务无法调用回调函数。 有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以使用broadcast receiver或事件总线,例如otto

例如使用otto,在您的活动中

@Subscribe public void onGetMessage(GetMessageEvent event) {
    // Update your listview here
}

@Override
public void onResume() {
    super.onResume();
    BusProvider.getInstance().register(this);
}

@Override
public void onPause() {
    super.onPause();
    BusProvider.getInstance().unregister(this);
}

在您的服务中,收到新消息后,将活动发布到活动。

BusProvider.getInstance().post(new GetMessageEvent(messageObj));

不要忘记创建GetMessageEvent类,

public class GetMessageEvent {
    public Message message;

    public GetMessageEvent(Message message) {
        this.message = message;
    }
}