【发布时间】:2018-05-11 10:32:01
【问题描述】:
我正在构建一个 Android 应用,我想将一个 EventBus 从我的 Service 类发送到我的 Activity。
这是我的活动代码:
@Override
protected void onResume() {
super.onResume();
startServiceScan(true);
}
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(BlePowerService.class);
}
@Override
protected void onPause() {
EventBus.getDefault().unregister(BlePowerService.class);
super.onPause();
}
@Override
public void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(BlePowerService.class);
}
// This method will be called when a HelloWorldEvent is posted
public void onEvent(MessageEvent event){
// your implementation
System.out.print("");
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void getEventBusData(MessageEvent messageEvent) {
if (messageEvent != null) {
//TO-DO
}
}
这是我的 BlePowerService 类中的代码:
EventBus.getDefault().post(new MessageEvent("update"));
如果我尝试启动我的应用程序,则会出现以下错误:
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.care.devicesensor/com.care.devicesensor.BLEActivity}:
org.greenrobot.eventbus.EventBusException: Subscriber class java.lang.Class and its super classes have
no public methods with the @Subscribe annotation
...............
Caused by: org.greenrobot.eventbus.EventBusException: Subscriber class java.lang.Class
and its super classes have no public methods with the @Subscribe annotation
我的 Activity 类中的错误 ID onStart 方法。
//编辑
我添加了我的 MessageEvent 类:
public class MessageEvent {
public final String message;
public MessageEvent(String message) {
this.message = message;
}
}
【问题讨论】:
-
你在使用 proGuard 吗?
-
请发布您的 MessageEvent 课程
-
不,我不使用 proGuard。我在我的 gradle 文件中插入了这一行代码: implementation 'org.altbeacon:android-beacon-library:2+'