如何使用greenrobot事件总线将活动从活动发送到服务?

时间:2016-02-26 04:26:46

标签: android android-activity service event-bus greenrobot-eventbus-3.0

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事件总线发送是否可行?

1 个答案:

答案 0 :(得分:2)

我强烈建议您在此重新考虑您的架构。 EventBus不是为了跨越流程边界而设计的,而Android服务并不容易为这个想法提供帮助。

EventBus是一个很棒的工具,但它很容易被滥用。

如果您想将活动信息发送到服务,最好使用Intent,但如果您真的需要进行更密切的互动,那么您应该考虑绑定。 Eventbus不应该取代这些互动。