我有一个AlarmReceiver(BrodcastReceiver
)在检查服务是否未运行状态后启动DownloadService(Service
)
context.startDownloadServiceIfNotRunning()// kotlin extension function check service state
在此行之后,我将otto事件发送到之前启动的服务
BusStation.getBus().post(DownloadEvent()) // Actually this line fired before start of service
但即使是为事件注册,下载服务也没有收到此事件。
调试后我发现Otto事件在服务实际启动之前就已经开始因此它没有收到任何事件
所以有什么方法可以知道android服务何时正确启动以通过otto
接收事件答案 0 :(得分:0)
您可以向intent添加参数。如何使用参数,而不是奥托?
Intent serviceIntent = new Intent(this,DownloadService.class);
serviceIntent.putExtra("Key", "Value");
startService(serviceIntent);
和onStart of service,您可以使用参数。
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
Bundle extras = intent.getExtras();
if(extras == null) {
// Do something
} else {
String value = (String) extras.get("Key");
if (value.equals("Value")) {
// Do same thing you want to do with Otto event.
}
}
}
的编辑:强>
如果您的活动不是时间紧迫的活动,您可以简单地推迟活动。
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
BusStation.getBus().post(DownloadEvent());
}
},1000);
否则,您需要创建自己的消息队列。