
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的app应用软件被开发推广上线,而本文我们就通过案例分析来简单了解一下,app应用软件启动优化方法都有哪些。
1、应用启动的方式
在Android中,应用启动一般可分为三种:冷启动、温启动、热启动。
那么什么是冷启动、温启动和热启动呢?下面我们来简单看一下它们的定义:
冷启动:当启动应用时,后台没有该应用的进程。这时系统会又一次创建一个新的进程分配给该应用,这个启动方式就是冷启动。
温启动:当启动应用时,后台已有该应用的进程,但是Activity可能因为内存不足被回收。这样系统会从已有的进程中来启动这个Activity,这个启动方式叫温启动。
热启动:当启动应用时,后台已有该应用的进程,且Activity仍然存在内存中没有被回收。这样系统直接把这个Activity拉到前台即可,这个启动方式叫热启动。
由于冷启动相对于其他启动方式多了进程的创建(Zygote进程fork创建进程)以及应用的资源加载和初始化(Application的创建及初始化),所以相对来说会比较耗时,所以我们一般说的App启动优化一般指的都是App的冷启动优化。
2、优化方案
App启动优化的本质就是:启动速度和体验的优化。
这就好比早些年你去饭店吃饭,你想要点餐但等了半天都没有服务人员过来,可能就等得不耐烦直接走开了。同样的,对于APP来说,如果用户点击App后长时间都打不开,用户就很可能失去耐心而卸载应用。
所以启动速度是用户对我们App的一体验。如果启动速度过慢,用户一印象就会很差,这样即使你功能做出花来,用户也不会愿意去使用。
3、线程优化
我们在开发应用的过程中,都或多或少会使用到线程。当我们创建一个线程时,需要向系统申请资源,分配内存空间,这是一笔不小的开销,所以我们平时开发的过程中都不会直接操作线程,而是选择使用线程池来执行任务。
但问题就在于如果线程池设置不对的话,很容易被人滥用,引发内存溢出的问题。而且通常一个应用会有多个线程池,不同功能、不同模块乃至是不同三方库都会有自己的线程池,这样大家各用各的,就很难做到资源的协调统一,劲不往一处使。
4、系统调度优化
1.启动阶段不启动子进程,只在主进程执行Application的onCreate方法。因为子进程会共享CPU的资源,导致主进程CPU紧张。
2.启动过程中减少系统调用,避免与AMS、WMS竞争锁。因为AMS和WMS在应用启动的过程中承担了很多工作,且这些方法很多都是带锁的,这时应用应当避免与它们进行通信,避免出现大量的锁等待,阻塞关键操作。
3.启动过程中除了Activity之外的组件启动要谨慎。因为四大组件的启动都是通过主线程Handler进行驱动的,如果在应用启动的同时他们也启动,Handler中的Message势必会增加,从而影响应用的启动速度。
4.启动过程中减少主线程Handler的使用。原因同上面一样,Activity的启动都是由主线程Handler进行驱动的,应用启动期间减少主线程Handler的使用,可以减小对主页面启动的影响。对于那些量大且频繁的任务调度,可以使用HandlerThread中的Looper创建属于子线程的handler来代替。
5.使用IdleHandler。利用IdleHandler特性,在消息队列空闲时,对延迟任务进行分批初始化。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。