现在绝大数应用都有启动页,多数形式是放一张图。
最好是网络请求过来的,下面只说本地默认图
关键是停留时间的控制
特别说明:几种时间控制有误差(系统时间的受内存的影响)
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.<Long>bindToLifecycle())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Long>() {
@Override
public void accept(Long aLong) throws Exception {
//倒计时完做操作,有广告图交给广告图
//if (flAd.getVisibility() != View.VISIBLE) {
//toNext();
//}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
//toNext();
}
});
}