想象一下,您需要加载一些数据并将其保存到您的碎片中。RX Java多订阅
我想使用RX Java。你如何处理一个片段上的多个订阅? AndroidObservable.bindFragment完成作业。但是当我需要更多订阅时,我该如何使用它?
public class MyFragment extends SomeFragment implements Observer<List<Item>>
{
private Subscription mReadSubscription;
private Subscription mWriteSubscription;
private JSONLoader mLoader;
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
final File theFile = new File(getActivity().getFilesDir(), FILE_NAME);
mLoader = new JSONLoader(theFile);
mReadSubscription = mLoader.getReadSubscription(this);
mWriteSubscription = mLoader.createWriteSubscription(new WriteObserver(), Collections.EMPTY_LIST);
这背后的想法是保存和使用Loader.load方法()loader.save()负载项目,每个项目的这将导致观察者正在使用(mReadSubscription,mWriteSubscription)。
WriteObserver只是一个简单的Bean再次实现观察器,但有部分我不明白:#bindFragment方法检查Fragment的实例。由于WriteObserver不是我导致异常的片段。 但我不能注册第二观察员,因为泛型。
林肯定我很确定我知道更少关于RX,任何人都可以指向我在一个正确的方向来解决这个问题?
[更新1]
还有就是我WriteObserver:
private final class WriteObserver implements Observer<Void> {
@Override
public void onCompleted() {
Toast.makeText(getActivity(), "Save Successful", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Void aVoid) {
}
}
设计是无法正常运转的WriteObserver不是一个片段,因为当你做一个例外:
java.lang.IllegalArgumentException: Target fragment is neither a native nor support library Fragment
AndroidObservable.bindFragment(observer, source)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
那么,我该如何解决这个限制?
我更新了更新后我的反应。 – dwursteisen 2014-10-20 10:12:28