我已经为此工作了几天,但在任何地方都没有找到任何解决方案。由于多索引过程,最初启动时间很长。我设法摆脱了我没有使用的额外谷歌服务库,并使代码足够小(低于 2^16 方法参考)而不需要多 dex。但是,当我运行并查看 traceview 时,我仍然看到下图显示 dalvic.system.dexfile 在主线程中启动并首先运行约 3 秒。我附加了我的 gradle 以及显示禁用了多 dex 选项。知道是什么导致 dalvic.system.DexFile 启动以及如果可能的话如何摆脱它?
编辑:经过进一步调查,我认为“即时运行”可能是原因。还不确定!如果有人能证实这一点,那当然很好。运行即时运行会在应用启动时导致任何可能导致延迟的初始化吗?那会与dexfile有关吗?
编辑:我对 Instant Run 的效果做了一些搜索,发现了这个. 似乎即时运行确实会影响启动时间,经过一些没有即时运行的运行后,我的问题似乎得到了解决。
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "24.0.0"
defaultConfig {
applicationId "com.example.main.projectone"
minSdkVersion 18
targetSdkVersion 24
versionCode 1
versionName "1.0"
multiDexEnabled false
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
...}