首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Greenrobot EventBus3未向我的订阅者发帖

Greenrobot EventBus3未向我的订阅者发帖
EN

Stack Overflow用户
提问于 2016-05-16 16:49:20
回答 1查看 118关注 0票数 0

在我的应用程序中,我向job-queue传递了一个job,在我的作业队列中,我已经注册了我的EventBus,并且我正在尝试post该事件,希望我的subscriber方法能够接收到它。我最近刚从Otto's EventBus迁移过来,虽然这种方法以前是有效的,但它不适用于绿色机器人EventBus 3。

下面是我想要实现的一个示例:

TestPresenterImpl.class (此类已在TestActivity.class中实例化)

代码语言:javascript
复制
@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队列处理队列中的作业的类)

代码语言:javascript
复制
@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

EN

回答 1

Stack Overflow用户

发布于 2016-05-20 13:47:09

您的EventBus.getDefault().register(this);应该遵循您的@Subscribe方法所在的活动,而不是mBus.getDefault().post(event);活动。

FirstActicity

代码语言:javascript
复制
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方法)

代码语言:javascript
复制
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"));


}

}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37250004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档