Android启动弹窗

2020-03-09  本文已影响0人  Jay简爱

前言

示意图2.jpg 示意图3.jpg

1. 确定方案

2. 实践

public abstract class BaseStartupPop {
    private boolean once = true; // 这里用来判断是否每次都要检查
    protected abstract void doShow();
    protected void finish() {
    if (hasNext()) {
      next().show();
    }
  }
}

先把公用方法放到一个基础类里

public class InfoProtectStartupPop extends BaseStartupPop {
    @Override protected void doShow() {
        if(xxx) {
           showDialog();
        } else {
          finish();
        }
    }
}

拿个人信息保护弹窗举例,我们在doShow方法里判断弹窗的条件,条件满足则展示,不满足则finish进行下一步,当然弹窗dismiss后别忘了也要调用finish进行下一步,然后我们需要一个管理类来管理这个队列

public class StartupPopManager {
    private Queue<StartupPop> queue;

    public void addPop(Queue<StartupPop> queue) {
      this.queue = queue;
    }
    public void start() {
      if(queue.isEmpty()) return;
      next().show();
    }

    public StartupPop next() {
      return queue.poll();
    }
}

最后我们只需要在初始化的时候将所有StartupPop添加到队列里,然后调用start方法即可

private Queue<StartupPop> queue = new ArrayDeque<>();
queue.offer(new InfoProtectStartupPop());
***
***
StartupPopManager.getInstance().addPop(queue);
StartupPopManager.getInstance().start();

总结

其实这种业务需求有很多种做法,这只是其中的一种,通过一个队列来逐个进行实现,更方便管理,代码更加的简洁易懂。

上一篇 下一篇

猜你喜欢

热点阅读