在实施上,建议治疗Android框架作为一个插件,不会泄露任何Android意识到依赖到演示层MVP模式Android的“干净”架构的努力。使用rxjava,如果我有被设计为“推”的数据到视图层演示者本人可能希望有这样的逻辑:在RxJava上使用Android上的清洁MVP:如何让演示者在使用UI线程的同时观察任何Android知识?
public interface SearchPresenter {
interface ViewLayer {
void updateResults(List<SearchResult> searchResults)
}
void bind(ViewLayer viewLayer);
void unbind();
}
public class SearchPresenterImpl implements SearchPresenter {
ViewLayer viewLayer;
CompositeDisposable compositeDisposable;
@Override
public void bind(ViewLayer viewLayer) {
this.viewLayer = viewLayer;
compositeDisposable = new CompositeDisposable();
compositeDisposable.add(
searchInteractor.getSearchResults()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::refreshView));
}
private void refreshView(List<SearchResult> searchResults) {
//send the results back to the view layer to update a RecyclerView
viewLayer.updateResults(searchResults)
}
@Override
public void unbind() {
compositeDisposable.dispose();
}
然而,通过观察“AndroidSchedulers.mainThread()”这个力依赖于:
import io.reactivex.android.schedulers.AndroidSchedulers
在这一点上,我的主持人现在知道关于android并且被绑定到它;这是我想避免的。
有什么建议的方法来处理这个问题,这样的结果是保证交付给ViewLayer对Android的UI(主)线程同时演示保持上的任何Android的相关不依赖?
也许ViewLayer接口需要像'可观察getThread()一些方法;'? – 0X0nosugar