2
私は次のコードを持っています。それは基本的にDynamoDBのに特定のSQLiteのテーブルからすべてのデータを送信しようとする試みです:doOnErrorは実装されていますが、RxAndroidはアプリケーションをクラッシュさせます
Observable.create(new Observable.OnSubscribe<Area>() {
@Override
public void call(Subscriber<? super Area> subscriber) {
try {
for (Area item : areaDao.listAll()) {
subscriber.onNext(item);
}
subscriber.onCompleted();
} catch (Exception e) {
subscriber.onError(e);
}
}
}).flatMap(new Func1<Area, Observable<Area>>() {
@Override
public Observable<Area> call(Area area) {
dynamoDBMapper.save(area);
return Observable.just(area);
}
}).observeOn(
AndroidSchedulers.mainThread()
).doOnError(new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
Log.w("AreaHandler", "Could not upload area", throwable);
}
}).doOnCompleted(new Action0() {
@Override
public void call() {
Toast.makeText(ctx, R.string.toast_upload_successful, Toast.LENGTH_SHORT).show();
}
}).subscribeOn(
Schedulers.io()
).subscribe(new Action1<Area>() {
@Override
public void call(Area area) {
areaDao.delete(area.getId());
}
});
Iが無効にインターネット接続とエミュレータ上でそれを実行しようとしている、と何が起こるかは、ダイナモクライアントはのカップルを行うということです(失敗した)再試行では、例外がスローされ、アプリケーションがクラッシュします。私がドキュメントで読んだことから、例外は野生に送られてプロセスを殺すのではなく、doOnErrorによって飲み込まれるべきです。
私には何が欠けていますか?