我开发了一个带聊天功能的Android应用程序,我想每隔10秒钟联系一次我的API来检索新邮件并在我的活动的ListView中显示它们。
如果我使用服务来检索消息,我无法更新ListView,因为服务和活动不在同一个上下文中,因此服务无法调用回调函数。 有没有办法做到这一点?
答案 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;
}
}