【发布时间】:2016-02-26 04:26:45
【问题描述】:
简单的 EventBus.getDefault().post() 带来的异常不是主线程。如何使用 greenrobot 事件总线将事件从 Activity 发送到服务?
chronometer = (Chronometer)findViewById(R.id.chrono);
chronometer.setBase(SystemClock.elapsedRealtime());
chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer arg0) {
long countUp = (SystemClock.elapsedRealtime() - arg0.getBase()) / 1000;
String asText = (countUp / 60) + ":" + (countUp % 60);
Log.e("asText", "asText" + asText);
ChronometerEvents event=new ChronometerEvents();
event.setTime(asText);
bus.post(event);
}
});
public class ChronometerEvents {
private String time;
public ChronometerEvents() {
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
}
public void onEvent(ChronometerEvents freq) {
Log.e("Chronometer", "Chronometer" + freq.getTime());
}
服务等级
public class NewLocationUpdateService extends Service {
private EventBus bus = EventBus.getDefault();
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
bus.unregister(this);
return START_NOT_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return binder;
}
@Override
public boolean onUnbind(Intent intent) {
return super.onUnbind(intent);
}
public void onEvent(ChronometerEvents freq) {
Log.e("Chronometer", "Chronometer" + freq.getTime());
}
}
是否可以使用 greenrobot 事件总线发送?
【问题讨论】:
-
向我们展示了代码。是意图服务吗?
-
分享你在服务中编写的代码
-
请检查我的代码
-
您没有在服务中注册
EventBus -
public int onStartCommand(Intent intent, int flags, int startId) { bus.register(this);
标签: android android-activity service event-bus greenrobot-eventbus-3.0