Я сделал простой функциональный тест, однако я встретил странную проблему.Служба RxJava и Android
Функциональный тест: запуск службы в действии, а затем отправка сообщения в действие с использованием RxJava и boradcast в службе, наконец, получение сообщения в действии.
запуске службы:
Intent i = new Intent(this, StartIntentService.class);
startService(i);
посылая сообщение:
@Override
protected void onHandleIntent(Intent intent) {
Observable.interval(0, 500, TimeUnit.MILLISECONDS)
.filter(integer -> {
return (integer < 400) && (integer % 3 == 0);
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(integer -> {
mIntent.putExtra("num", integer);
sendBroadcast(mIntent);
});
}
приема сообщения:
class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (ACTIVITY_SERVICE_INTERACTIVE.equals(intent.getAction())) {
int res = intent.getIntExtra("num", -1);
mResTv.append(res + "" + "\t\t\t\t");
}
}
}
ожидаемый результат: все номера могут быть делится на 3, однако реальный результат: все числа равны -1.
Если я заменил интервал метода на диапазон или добавлю метод: .observeOn (AndroidSchedulers.mainThread()), все идет хорошо.
Почему?
** Большое спасибо **. – Sawyer