我需要将一个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。
答案 0 :(得分:1)
您可以直接创建绑定服务和调用服务方法。没有事件总线库。 这是你如何做到这一点: https://developer.android.com/guide/components/bound-services.html#Binder