Simple EventBus.getDefault()。post()带来异常而非主线程。如何使用greenrobot事件总线将事件从Activity发送到服务?
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());
}
}
服务类
body {
background: url('http://hdwallpaperfun.com/wp-content/uploads/2015/01/Fantasy-Knight-With-Sword-Computer-Desktop-Background-279525.jpg') no-repeat fixed center 0;
-moz-background-size: cover;
-o-background-size: cover;
-webkit-background-size: cover;
background-size: cover;
}
.holder {
width: 900px;
margin: 0 auto;
}
.box-set__knight {
width: 100px;
padding: 0 20px 0 0;
}
.box-set__knight-image {
width: 100%;
display: inline-block;
vertical-align: top;
}
.box-set__header {
display: inline-block;
vertical-align: top;
color: #fff;
padding: 12px 0 0;
}
.box-set__header h1 {
font-size: 28px;
}
.box-set__header h1 span {
font-size: 15px;
display: block;
font-weight: normal;
}
使用greenrobot事件总线发送是否可行?
答案 0 :(得分:2)
我强烈建议您在此重新考虑您的架构。 EventBus不是为了跨越流程边界而设计的,而Android服务并不容易为这个想法提供帮助。
EventBus是一个很棒的工具,但它很容易被滥用。
如果您想将活动信息发送到服务,最好使用Intent,但如果您真的需要进行更密切的互动,那么您应该考虑绑定。 Eventbus不应该取代这些互动。