最近观看友盟统计发现App启动页跳出率很高,观看启动页的平均启动时间为2.8s,如下图:
所以一个很现实的问题就出来了,优化启动页面。。。
(一)做了什么?
我们的启动页面主要用于展示启动页面,加载网络配置信息;
(二)那些可以优化的地方?
展示启动页面的逻辑没办法优化了,看来只能在加载网络请求的时候考虑考虑了。
(三)启动页逻辑?
启动页启动时显示启动页面,然后有两个异步的网络请求请求网络配置信息,默认存在一个延迟消息3S秒钟之后跳转主界面;
(四)如何优化?
现在的逻辑是无论配置信息是否拉取成功都需要在3秒钟的时候跳转主页面,可以这样考虑,若这两个个配置信息拉取的时间小于3秒钟其实不必要等到3秒钟在跳转主界面;思路已经出来了,剩下的就是具体实现了。。
(五)具体实现
[html] view plain copy
- if (Config.isNetworkConnected(mContext)) {
- timer = new Timer();
- timerTask = new TimerTask() {
- @Override
- public void run() {
- if (isGoToComplete) {
- L.i("等待2s完成,取消timer任务...");
- cancelTimer();
- return;
- }
- if (isLoadStartQueryComplete && isLoadUserInfoComplete) {
- // 已经显示过引导图
- L.i("StartActivity中网络请求完成,执行跳转逻辑.....");
- if (GuideActivity.isShowedGuide(mContext)) {
- eventWhat = GOTO_MAIN;
- } else {
- eventWhat = GOTO_GUIDE;
- }
- handler.sendEmptyMessage(eventWhat);
- L.i("StartActivity中网络请求完成,取消timer任务...");
- cancelTimer();
- }
- }
- };
- timer.schedule(timerTask, 0, 100);
- }
创建一个timer任务,每隔100ms执行一次,判断这两个拉取网络配置信息的异步消息是否已经完成,若已经完成的话则发送handler消息跳转主界面,若3秒钟之内都没有完成拉取任务,则直接跳转同事取消timer任务。
在启动页进行网络请求不管是否完成在,特定3秒后都要结束 。通过一个定时器判断请求是否完成完成了下一页。。。。。。。