android启动页停留时间

现在绝大数应用都有启动页,多数形式是放一张图。
最好是网络请求过来的,下面只说本地默认图
关键是停留时间的控制
特别说明:几种时间控制有误差(系统时间的受内存的影响)
1、Timer 有时间误差
2、new Handler() 有时间误差
3、Rxjava 目测没有时间误差

new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {

        }
    },2000);  //延迟2s后执行

推荐使用方式

private int defaultSecond = 2;  //显示默认图时间2s

@SuppressLint("HandlerLeak")
private final Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        defaultSecond--;
        if (defaultSecond == 0) {
            //倒计时完跳进应用
            isToMain();

        } else {
            handler.sendEmptyMessageDelayed(1, 1000);
        }
    }
};

调用时机:

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_start_up);

    mContext = this;

    //倒计2s
    handler.sendEmptyMessageDelayed(1, 1000);


}  

用RxJava方式

private void startCountDown() {
    int defaultCountDownTime = 1500;
    //加上onError处理,防止报错没捕捉而导致闪退
    Observable.timer(defaultCountDownTime, TimeUnit.MILLISECONDS)
            .compose(this.bindToLifecycle())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Consumer() {
                @Override
                public void accept(Long aLong) throws Exception {
                    //倒计时完做操作,有广告图交给广告图
                    //if (flAd.getVisibility() != View.VISIBLE) {
                        //toNext();
                    //}
                }

            }, new Consumer() {
                @Override
                public void accept(Throwable throwable) throws Exception {
                    //toNext();
                }

            });
}

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注