我正在开发安卓应用程序,它应该在RecyclerView上使用分页。我在Service中使用Service向API发出then请求,然后在DB中持久化获取数据。要通知DB中的更改,然后在适配器中应用新数据,我建议使用Otto事件总线。Publisher/订户模式对我来说是很新的,所以我试图找到一个很好的教程或解释它是如何工作的,但是经过两天的搜索,我对应该实现什么以及事件总线是如何工作的只有模糊的想法。有人能给出一个很好的提示,我应该从哪里开始或链接教程或代码示例?我知道这是一个非常新鲜的问题,但我认为目前没有其他选择。
发布于 2016-08-10 08:44:48
我发现的最好的指南是:来自沃盖拉和科佩拉斯。我希望它能对某人有所帮助。好的笔记根据我的经验-奥托EventBus同步工作,记住它。
发布于 2019-03-13 09:46:46
将此库导入应用程序级gradel:
implementation 'org.greenrobot:eventbus:3.0.0'创建用于事件处理的类:
public class DataSyncEvent {
private final String syncStatusMessage;
private final String countryName;
private final int postion;
public DataSyncEvent(String syncStatusMessage, int postion, String countryName) {
this.syncStatusMessage = syncStatusMessage;
this.postion = postion;
this.countryName = countryName;
}
public String getSyncStatusMessage() {
return syncStatusMessage;
}
public String countryName() {
return countryName;
}
public int getPostion() {
return postion;
}
}现在从类/片段或服务传递值:
EventBus.getDefault().post(new DataSyncEvent(leftOrRight, position, countryName));不要忘记在您使用@订阅的地方注册和注销总线。
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
} 通过@订阅,您可以获得该值:
@Subscribe
public void onEvent(DataSyncEvent syncStatusMessage) {
if (syncStatusMessage.getSyncStatusMessage().contains("left")) {
leftPosition = syncStatusMessage.getPostion();
img_flag_left.setImageResource(countriesFlag[leftPosition]);
leftCountryName.setText(syncStatusMessage.countryName());
} else {
rightPosition = syncStatusMessage.getPostion();
img_flag_right.setImageResource(countriesFlag[rightPosition]);
rightCountryName.setText(syncStatusMessage.countryName());
}
}https://stackoverflow.com/questions/34292182
复制相似问题