@Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Activity activity = getActivity(); if (activity instanceof PagerActivity) { final PagerActivity pagerActivity = (PagerActivity) activity; downloadImage(); handler.postDelayed( () -> new QueryPageCoordinatesTask(pagerActivity).execute(pageNumber), 1000); if (QuranSettings.getInstance(activity).shouldHighlightBookmarks()) { // Observable.timer by default runs on Schedulers.computation() compositeDisposable.add( Completable.timer(250, TimeUnit.MILLISECONDS) .subscribeOn(AndroidSchedulers.mainThread()) .subscribeWith( new DisposableCompletableObserver() { @Override public void onComplete() { highlightTagsTask(); } @Override public void onError(Throwable e) {} })); } } }
private void highlightTagsTask() { compositeDisposable.add( bookmarkModel .getBookmarkedAyahsOnPageObservable(pageNumber) .observeOn(AndroidSchedulers.mainThread()) .subscribeWith( new DisposableObserver<List<Bookmark>>() { @Override public void onNext(List<Bookmark> bookmarks) { for (int i = 0, bookmarksSize = bookmarks.size(); i < bookmarksSize; i++) { Bookmark taggedAyah = bookmarks.get(i); mImageView.highlightAyah( taggedAyah.sura, taggedAyah.ayah, HighlightType.BOOKMARK); } if (mCoordinatesData == null) { if (mCurrentTask != null && !(mCurrentTask instanceof QueryAyahCoordsTask)) { mCurrentTask.cancel(true); mCurrentTask = null; } if (mCurrentTask == null) { mCurrentTask = new GetAyahCoordsTask(getActivity()).execute(pageNumber); } } else { mImageView.invalidate(); } } @Override public void onError(Throwable e) {} @Override public void onComplete() {} })); }
@Override public void onDetach() { ayahSelectedListener = null; compositeDisposable.dispose(); super.onDetach(); }