Android性能优化内存优化最详细最通俗讲解--安卓优化之路--启动优化(一)

        周末闲来无事,瞄了一眼boss上的安卓招聘,这变化还是真大,记得当初刚入行的时候招聘目录上第一条,大哼哼的写着,熟练掌握安卓四大组件,Activity生命周期也是面试必问的,而现在这几条要求好像都没了。随便看了几家,对于安卓性能优化内存优化好像是最多的出现。于是google,百度,简书,CSDN等一通查询,觉得写得都都很不错,有觉得那些地方面试如果面试时这样回答总感觉不好。于是决定另辟蹊径,搞一篇通俗易懂,面试时侃侃而谈,从APP开发到上架的优化之路。

    App的启动优化

启动速度缓慢是我们在开发过程中经常会遇到的问题,一般来说。启动方式分为两种:冷启动和热启动。

冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。

热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动。

启动过程就不在这里啰嗦了,先来说说一般的启动页面即SplishActivity:

开发App时,都会设置一个启动页SplashActivity,然后2或3秒后,并且SplashActivity里面可以去做一些MainActivity的数据的预加载,然后需要通过意图传到MainActivity。此缺点就是:在进入首页的时候,首页复杂的View渲染以及必须在UI线程执行的业务逻辑,仍然拖慢了启动速度。启动页简单执行快,首页复杂执行慢,前轻后重。

优化之路:把SplashActivity改成SplashFragment,应用程序的入口仍然是MainActivity,在MainActivity中先展示SplashFragment,当SplashFragment显示完毕后再将它remove,同时在SplashFragment的2S的友好时间内进行网络数据缓存,在窗口加载完毕后,我们加载activity_main的布局,考虑到这个布局有可能比较复杂,耽误View的解析时间,采用ViewStub的形式进行懒加载。这样一开始只要加载SplashFragment所展示的布局就Ok了。

ViewStub

这个东西大家应该都不陌生吧??

android.View.ViewStub,是一个大小为0 ,默认不可见的控件,只有给他设置成了View.Visible或调用了它的inflate()之后才会填充布局资源,也就是说占用资源少。所以,推荐使用viewStub

文章写的太长估计就没人愿意花费大把时间看了  这一章就到这,未完待续。。。




你可能感兴趣的:(安卓性能优化一)