自从我开始使用来自安卓支持设计库的UI元素后,应用程序的初始加载时间变得非常缓慢(大约8秒!),我真的不知道为什么。
在大部分启动过程中我运行了方法跟踪(android studio 需要一段时间来启动 CPU 监视器),发现它在 dalvik.system.DexFile.openDexFile
上花费了4秒钟,我不确定为什么需要这么长时间。
有任何想法吗?(我没有添加任何代码,因为我的应用程序有很多代码,我不知道问题出在哪里...)
自从我开始使用来自安卓支持设计库的UI元素后,应用程序的初始加载时间变得非常缓慢(大约8秒!),我真的不知道为什么。
在大部分启动过程中我运行了方法跟踪(android studio 需要一段时间来启动 CPU 监视器),发现它在 dalvik.system.DexFile.openDexFile
上花费了4秒钟,我不确定为什么需要这么长时间。
有任何想法吗?(我没有添加任何代码,因为我的应用程序有很多代码,我不知道问题出在哪里...)
我在构建发布版应用程序时,与我通常运行的调试版本相比,经历了速度上的提升。
我不确定为什么会这样,但我猜测这可能是由于编译器将外部库链接到apk的方式所致。我曾经看过一次采访,采访对象是 Android UI 平台的开发人员之一 Chet Haase,他解释说,他们正在尝试尽快显示应用程序的第一个活动,以避免无聊的启动画面。也许该功能在发布版构建过程中以某种方式被启用。
编辑: 正确答案已由@Embydextrous写在下面。原因是在调试模式下对应用程序进行dexing。
通常情况下,这种情况发生在调试版本中,但也可能发生在发布版本中。
如果存在多个dex文件,则会先加载主要的dex文件(classes.dex),然后再加载其他dex文件。
由于Proguard可以删除未使用的方法并减少方法数量,因此在发布版本中通常不会显示出现多个dex文件。但是,在调试版本中没有使用Proguard,因此存在多个dex文件。
但是,在像AirBnb、Facebook、Twitter等非常大的应用程序中,存在多个dex文件。因此可能导致应用程序启动延迟,但可以使用dex优化器进行优化。