本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

【腾讯GAD】5分钟教你打造一个秒开的Android App

时间:2017-07-11 12:20来源:668论坛 作者:118开奖 点击:
【腾讯GAD】5分钟教你打造一个秒开的Android App 2017-07-10 20:05 来源:Gad-腾讯游戏开发者平台 原标题:【腾讯GAD】5分钟教你打造一个秒开的Android App 近日在开发过程中,发现每次点击app从

腾讯GAD】5分钟教你打造一个秒开Android App

2017-07-10 20:05来源:Gad-腾讯游戏开发者平台

原标题:【腾讯GAD】5分钟教你打造一个秒开Android App

近日在开发过程中,发现每次点击app从桌面启动都有一个在桌面明显的等待时间,机型越低端的越明显,冷启动优化看来已经势在必行,所以怒而一顿研究再解决之。话不多说先上优化前后效果图:

买家秀:

淘宝秀:

Android App启动流程:

俗话说要想优化好,流程不可少!关于android app启动的流程图如下:

总结一下一个完成的冷启动app过程应该是经过:

Zygote Fork Proccess -> Application:attachBaseContext() -> Application:onCreate() -> MainActiviity:onCreate()

这里主要是把相应的生命周期回调写出来。 因为一般大家的业务代都是在这些函数回调中调用。

App冷启动相关优化点

1. 生命周期内减少耗时操作:

· Application:attachBaseContext():

这个方法中一般雷区主要都在这句代上,因为在Android 5.0(API 21) 以下会存在65535方法数分包的问题,当dex过大时会导致Application启动慢, ANR或者ClassNotFound等异常,关于分包解决和优化方案网上一堆就不在做赘述了。

· Application:onCreate()

这个方法是需要重点优化的,因为大家的第三方插件初始化一般都会放在这里,在Application初始化做繁重的东西会严重阻塞app启动(DiskIO,网络请求等)。以下是我们第三方插件初始化的耗时:

debug:

release:

这里把debug和release下的时间都贴出来,是希望大家不要重蹈覆辙。。。 因为debug模式下和release模式下一个是1000ms左右, 一个是300ms左右,误差很大,请大家一定要在release下测试数据!!!!

针对于解决第三方插件初始化耗时方案一般是:

1.SDK分优先级加载,非必要SDK由懒加载实现。

2.可以多线程初始化的sdk由多线程方式来进行初始化。

· MainActiviity:onCreate()

同上一样,尽量不要在此布局做一些耗时的操作或者呈现一些过于复杂的布局。在具体分析自己的app时发现onCreate中有这样一行代码:

其作用是希望用户在打开时,一定能看见Splash的画面,主动延迟了1s加载。这里其实有更好的解决办法处理,则是把跳转MainPage的方法放在onResume中而不是放在onCreate中。因为Android系统中onResume一定是处于可见可交互的状态,用户一定能看见SplashActivity再去跳转,由系统生命周期决定,而不是固定的等待1s,此处优化后启动速度又提升了500ms。所以建议大家以后还是遵循生命周期去做一些事情,j2直播,尽量别进行人为延迟阻塞。

2. 避免冷启动

App启动方式一般有3种:

· ColdStart ——冷启动:

此种方式最为耗时,一般是因为进程被干掉,系统需要重新fork进程进行一系列初始化。

· WarmStart ——暖启动

比ColdStart稍快,因为app的所有Activities还常驻在内存中,并没有被杀掉,所做的只是把app从后台提到前台来展示,并不需要重走初始化一系列行为,减少了对象初始化、布局加载等工作。但其行为表现与冷启动一致,是会displays a blank screen直到App渲染activity。这个blank screen后面会解释。

· LukeWarm Start——热启动

启动方式最快,类似于返回键退出应用又立即进入的那种行为。

优化方案:

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容