在我的应用程序中,我向job-queue传递了一个job,在我的作业队列中,我已经注册了我的EventBus,并且我正在尝试post该事件,希望我的subscriber方法能够接收到它。我最近刚从Otto's EventBus迁移过来,虽然这种方法以前是有效的,但它不适用于绿色机器人EventBus 3。
下面是我想要实现的一个示例:
TestPresenterImpl.class (此类已在TestActivity.class中实例化)
@Override
public void addJob(JobData jobData) {
jobManager.addJobInBackground(new SendUpdateJob(jobData));
}
@Subscribe
@Override
public void onUpdate(JobAddedEvent event) {
if (event.getStatus() == 1) {
Log.i(LOG_TAG, "test");
}
}
@Override
public void onStart() {
mBus.getDefault().register(this);
}
@Override
public void onStop() {
mBus.getDefault().unregister(this);
}SendUpdateJob.class (这是使用先前由Path维护的android-priority-job队列处理队列中的作业的类)
@Override
public void onAdded() {
Log.i(LOG_TAG, "On added");
mBus.getDefault().register(this);
JobAddedEvent event = new JobAddedEvent();
event.setStatus(1);
mBus.getDefault().post(event);
}通常这在Otto上工作,但由于这是一个稍微不同的,我想知道我做错了什么。我得到的错误是:..."SendJobUpdate and its super classes have no public methods with the @Subscribe annotation".我是不是做错了什么?
我还确保我正在导入import org.greenrobot.eventbus.Subscribe;,因为我注意到其他人已经指出他们已经导入了googles subscribe。
发布于 2016-05-20 13:47:09
您的EventBus.getDefault().register(this);应该遵循您的@Subscribe方法所在的活动,而不是mBus.getDefault().post(event);活动。
FirstActicity
public class FirstActicity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
//register should in this activity
EventBus.getDefault().register(this);
}
@Subscribe(threadMode = ThreadMode.MainThread)
public void onEvent(MessageEvent event) {
//eventbus notify
Log.i("2hh", "main --- eventbus ---- updatedata");
queryData();
}
@Override
protected void onDestroy() {
if (EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().unregister(this);
}
}SecondActivity(不要在这个活动中注册,因为你没有任何@Subscribe方法)
public class SecondActivity extends AppCompatActivity implements{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);
EventBus.getDefault().post(new MessageEvent("updateData"));
}}
https://stackoverflow.com/questions/37250004
复制相似问题