package com.yuantiku.yyl.pages; import com.yuantiku.yyl.helper.L; import com.yuantiku.yyl.pages.interfaces.Page; import com.yuantiku.yyl.pages.interfaces.PageManager; import java.util.ArrayList; import java.util.Collections; import java.util.List; import rx.Observable; /** * @author wanghb * @date 15/5/5. */ public abstract class AbstractPageManager implements PageManager { private List<Page> pages = new ArrayList<>(); @Override public void push(Page page, String tag) { L.i("push page " + tag + " : " + page.getClass().getName()); page.setPageManager(this); page.prePush(); pushPage(page, tag); pages.add(page); page.postPush(); } @Override public void pop(Page page) { L.i("pop page " + " : " + page.getClass().getName()); page.prePop(); pages.remove(page); popPage(page); page.prePop(); } @Override public void resetWithStartPage(Page page, String tag) { L.i("reset with start page " + tag + ":" + page.getClass().getName()); List<Page> pageList = new ArrayList<>(pages); Collections.reverse(pageList); Observable.from(pageList).subscribe(pg -> pop(pg)); push(page, tag); } protected abstract void pushPage(Page page, String tag); protected abstract void popPage(Page page); }