[英]Generic rxjava2 database access layer
我剛開始使用java / rxjava2 / android開發並設法獲得以下工作示例:
Observable<Object> source3 = Observable.create(emitter-> {
cursor = app.dbh.getAlllTransactions2();
emitter.onNext(cursor);
emitter.onComplete();
}).subscribeOn(Schedulers.io());
source3.subscribe(c -> {
transactionAdapter = new TransactionCursorAdapter(this.getActivity(), (Cursor)c);
LSTVW_transactions.setAdapter(transactionAdapter);
});
現在我有兩個問題:
我要轉換的此類設置的示例:
private static <T> Observable<T> makeObservable(final Callable<T> func) {
return Observable.create(
new Observable.OnSubscribe<T>() {
@Override
public void call(Subscriber<? super T> subscriber) {
try {
subscriber.onNext(func.call());
} catch(Exception ex) {
Log.e(TAG, "Error reading from the database", ex);
}
}
});
}
嘗試這個:
Observable.create((ObservableOnSubscribe<YourType>) e -> { ... }
對於第二個片段,我沒有確切地想要實現什么,但我認為您可以使用makeObservable
方法簡化擁有該正文的makeObservable
(我剛剛刪除了try-catch部分):
return Observable.create(e -> e.onNext(func.call()));
關於濫用Rx:我認為將Cursor作為流的一個項傳遞不是一個好主意。 您可能會有從數據庫讀取的數據流,以便您的Observer可以正確響應。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.