如何正常或使用EventBus将数据从活动传递到服务?

时间:2017-07-24 22:15:50

标签: java android string event-bus

我需要将一个String传递给在后台运行的服务,该服务会发出通知。我见过很多教程,但我不知道该怎么做。

我尝试过使用GreenRobot EventBus和Otto Square EventBus

试过这个,但它不起作用:

这是我要传递字符串的活动 (代码相关)

在此,我正在使用Otto EventBus

    @Override
protected void onCreate(@Nullable Bundle savedInstanceState) {

 mButtonsetOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

         BusStation.getBus().post(new Mensaje("Hello world"));             

        }
    });

模型类: // ========================================

     public class BusStation {
private static Bus bus = new Bus();

public static Bus getBus() {
    return bus;
}
}

数据传递:

 public class Mensaje {
private String msg;

public Mensaje(String msg) {
    this.msg = msg;
}

public String getMsg() {
    return msg;
}
 }

// ======================================== BackGroundService:

      public class FirebaseBackgroundService extends Service {






@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {
    super.onCreate();

  BusStation.getBus().register(this);
 }
 }  

  @Override
public void onDestroy() {
    super.onDestroy();
    BusStation.getBus().unregister(this);
} 



 @com.squareup.otto.Subscribe
public void receiveMessage(Mensaje mensaje){
    Toast.makeText(getApplicationContext(), mensaje.getMsg(), Toast.LENGTH_LONG).show();
}
}

但是我在Toast中没有得到任何东西,我也尝试过使用Log.d。

1 个答案:

答案 0 :(得分:1)

您可以直接创建绑定服务和调用服务方法。没有事件总线库。 这是你如何做到这一点: https://developer.android.com/guide/components/bound-services.html#Binder