android启动页优化实践

 最近观看友盟统计发现App启动页跳出率很高,观看启动页的平均启动时间为2.8s,如下图:


所以一个很现实的问题就出来了,优化启动页面。。。


(一)做了什么?

我们的启动页面主要用于展示启动页面,加载网络配置信息;


(二)那些可以优化的地方?

展示启动页面的逻辑没办法优化了,看来只能在加载网络请求的时候考虑考虑了。


(三)启动页逻辑?

启动页启动时显示启动页面,然后有两个异步的网络请求请求网络配置信息,默认存在一个延迟消息3S秒钟之后跳转主界面;


(四)如何优化?

现在的逻辑是无论配置信息是否拉取成功都需要在3秒钟的时候跳转主页面,可以这样考虑,若这两个个配置信息拉取的时间小于3秒钟其实不必要等到3秒钟在跳转主界面;思路已经出来了,剩下的就是具体实现了。。


(五)具体实现

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. if (Config.isNetworkConnected(mContext)) {  
  2.             timer = new Timer();  
  3.             timerTask = new TimerTask() {  
  4.                 @Override  
  5.                 public void run() {  
  6.                     if (isGoToComplete) {  
  7.                         L.i("等待2s完成,取消timer任务...");  
  8.                         cancelTimer();  
  9.                         return;  
  10.                     }  
  11.                     if (isLoadStartQueryComplete && isLoadUserInfoComplete) {  
  12.                         // 已经显示过引导图  
  13.                         L.i("StartActivity中网络请求完成,执行跳转逻辑.....");  
  14.                         if (GuideActivity.isShowedGuide(mContext)) {  
  15.                             eventWhat = GOTO_MAIN;  
  16.                         } else {  
  17.                             eventWhat = GOTO_GUIDE;  
  18.                         }  
  19.                         handler.sendEmptyMessage(eventWhat);  
  20.                         L.i("StartActivity中网络请求完成,取消timer任务...");  
  21.                         cancelTimer();  
  22.                     }  
  23.                 }  
  24.             };  
  25.             timer.schedule(timerTask, 0, 100);  
  26.         }  

创建一个timer任务,每隔100ms执行一次,判断这两个拉取网络配置信息的异步消息是否已经完成,若已经完成的话则发送handler消息跳转主界面,若3秒钟之内都没有完成拉取任务,则直接跳转同事取消timer任务。 


在启动页进行网络请求不管是否完成在,特定3秒后都要结束 。通过一个定时器判断请求是否完成完成了下一页。。。。。。。




posted @ 2016-09-07 16:27  画戟  阅读(1165)  评论(0编辑  收藏  举报