XGo*_*het 9 android synchronized-block
我的一个应用程序在启动时突然失败,并显示以下错误消息:
java.lang.VerifyError:拒绝类com.sample.BufferManagerImpl,因为编译时验证失败('com.sample.BufferManagerImpl'的声明出现在/data/app/com.sample.myapp-1/base.apk中)
它仅在使用ART虚拟机的设备上失败,但在Dalvik上没有
问题是由于在synchronized块内部有一个try-catch块,例如:
try {
synchronized (mLock) {
updateState();
}
} catch (IllegalStateException e) {
}
Run Code Online (Sandbox Code Playgroud)
显然这不是一个好习惯,但是一旦我改变它就会这样:
synchronized(mLock) {
try {
updateState();
} catch (IllegalStateException e) {
}
}
Run Code Online (Sandbox Code Playgroud)