android启动页优化实践

时间:2022-10-09 22:44:53

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

android启动页优化实践

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

(一)做了什么?

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

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

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

(三)启动页逻辑?

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

(四)如何优化?

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

(五)具体实现

[html] view plain copy

android启动页优化实践android启动页优化实践

  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秒后都要结束 。通过一个定时器判断请求是否完成完成了下一页。。。。。。。