在我开始使用Android支持设计库中的UI元素后,应用程序初始加载时间变得非常慢(大约8秒!),我真的不确定原因.
我在大多数启动过程中都运行了方法跟踪(android studio开始运行cpu监视器需要时间)并发现它花了4秒钟:
dalvik.system.DexFile.openDexFile
我不知道为什么这么长时间.
有任何想法吗?(我没有添加任何代码,因为我的应用程序中有很多代码,我不知道问题来自哪里......)
在构建发布应用程序而不是我正常运行的调试版本时,我的速度有所提高.
我不确定它为什么会起作用,但我想它必须是因为编译器将ext库链接到apk中的方式.我曾经看过Chet Haase的采访,他是android ui平台上的开发者之一,他解释了他们是如何尽快在应用程序上展示第一个活动以避免沉闷的闪屏.也许在发布构建过程中以某种方式启用了该功能.
编辑:正确的答案由@Embydextrous写在下面.它是由调试模式下的应用程序dexing引起的.
这通常在调试版本中发生,但在发行版本中也可能发生。
如果有多个dex文件。首先加载主要dex文件(classes.dex),然后再加载其他dex文件。
由于proguard会删除未使用的方法并减少方法数量,因此通常不会在发行版本中显示,因此仅制作一个.dex。在调试中,不使用proguard,因此有多个dex文件。
但是,在AirBnb,Facebook,Twitter等大型应用程序中,存在多个dex文件。因此,应用启动延迟可以使用dex优化器进行优化。