我正在使用RXJava2在廣播接收器內發送電子郵件,我想知道何時應該取消訂閱該事件。該代碼基本上是:如何取消訂閱廣播接收器中的RXjava呼叫
getSmsMmsObservable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnError(throwable -> Timber.e(throwable, "Error sending mail."))
.map(smsMmsAddress1 -> {
smsMmsAddress = smsMmsAddress1;
return doInBackgroundSendEmail();
})
.map(stringSingle -> {
mMsgResponse = stringSingle;
this.done = true;
return deleteFile();
})
.subscribe(success -> {
if (success) {
Toast.makeText(context, "Message Status: " + mMsgResponse, Toast.LENGTH_LONG).show();
}
});
我什麼時候取消(沒有在onPause或在的onDestroy接收器),我如何知道什麼時候的onReceive完了?接收者通過清單進行註冊。我想過做一個複合觀察,然後把它在subscribe()部分中處理掉。
compositeDisposable.add(
getSmsMmsObservable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnError(throwable -> Timber.e(throwable, "Error sending mail."))
.map(smsMmsAddress1 -> {
smsMmsAddress = smsMmsAddress1;
return doInBackgroundSendEmail();
})
.map(stringSingle -> {
mMsgResponse = stringSingle;
this.done = true;
return deleteFile();
})
.subscribe(success -> {
if (success) {
Toast.makeText(context, "Message Status: " + mMsgResponse, Toast.LENGTH_LONG).show();
}
compositeDisposable.dispose();
})
);
嘗試在服務中執行此操作,而不是接收方 –
我不行,我需要在收到文本時觸發此操作。 –
你應該開始服務併發送文本給他。 另一個解決方案 - Android會在onReceive()調用後10秒內殺死接收者 –