可爱的程序猿 - CoderYuan.com

改变世界的猿类——袁国正的个人网站

最近做了一些 Android App 启动速度的优化,有一些心得,整理整理

影响启动速度的原因

高耗时任务

数据库初始化、某些第三方框架初始化、大文件读取、MultiDex 加载等,导致 CPU 阻塞

复杂的 View 层级

使用的嵌套 Layout 过多,层级加深,导致 View 在渲染过程中,递归加深,占用 CPU 资源,影响 Measure、Layout 等方法的速度

类过于复杂

Java 对象的创建也是需要一定时间的,如果一个类中结构特别复杂,new 一个对象将消耗较高的资源,特别是一些单例的初始化,需要特别注意其中的结构

主题及 Activity 配置

有一些 App 是带有 Splash 页的,有的则直接进入主界面,由于主题切换,可能会导致白屏,或者点了 Icon,过一会儿才出现主界面

一些典型的例子及优化方案

阅读全文 »

Context 是 Android App 中用的非常多的一种概念,常被翻译成上下文,这种概念在其他的技术中也有所使用,无意间点了 Context 的源码,那么就来分析分析 Context 在 Android 中到底是什么东西?

先贴段代码

1
2
3
4
5
6
7
8
9
/**
* Interface to global information about an application environment. This is
* an abstract class whose implementation is provided by
* the Android system. It
* allows access to application-specific resources and classes, as well as
* up-calls for application-level operations such as launching activities,
* broadcasting and receiving intents, etc.
*/
public abstract class Context {

通过注释可以看出,Android 官方对它的解释,大概可以理解为应用程序环境中全局信息的接口,它整合了许多系统级的服务,可以用来获取应用中的类、资源,以及可以进行应用程序级的调起操作,比如启动 Activity、Service 等等,而且 Context 这个类是 abstract 的,不包含具体的函数实现。

阅读全文 »

17 年底就开始寻思升级一下 coderyuan.com 了,想写点东西,最近搞了搞,用上了高大上的 hexo!然后发现,这东西真的是万恶之源啊,跟无底洞一样,一堆东西都想做,越做越多,越做越深,像个层次特别深的递归,要算好久才能返回。。。

现在新主页上线了,以后应该都在这里写东西了,以前在 CSDN 写的文章就不同步过来了,有需要的朋友可以在https://blog.csdn.net/yuanguozhengjust继续看

Github:https://github.com/yuanguozheng

0%