我的logcat中有一个警告:
W/art: Verification of void com.myapp.LoginFragment$override.lambda$logIn$5(com.myapp.LoginFragment, java.lang.Throwable) took 217.578ms
这是代码:
subscription = viewModel.logIn()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
this::showStudioSelection,
error -> {
ErrorResponse errorResponse = ErrorResponseFactory.create(error);
if (errorResponse.code() == ApiResult.BAD_REQUEST) {
Snackbar.make(getView(), R.string.login_bad_credentials, Snackbar.LENGTH_LONG)
.setAction(android.R.string.ok, v -> {})
.show();
} else {
Snackbar.make(getView(), "Unknown error " + errorResponse.code(), Snackbar.LENGTH_LONG)
.setAction(android.R.string.ok, v -> {})
.show();
}
viewModel.updateLoginButtonState();
}
);
220ms相当多(我感觉我注意到该Fragment的启动滞后了)。
我正在使用RxJava和retrolambda,但这不是此消息弹出的唯一位置,因此我认为它没有直接关系。
如何影响验证时间? 值得吗?
似乎它与圈复杂度有关,因为我可以通过使用一些更干的代码删除
Snackbar.make
中的if
调用来摆脱警告:String errorMessage;
if (errorResponse.code() == ApiResult.BAD_REQUEST) {
errorMessage = getString(R.string.login_bad_credentials);
} else {
errorMessage = "Unknown error " + errorResponse.code();
}
最佳答案
看起来这是较新的ART
运行时的“向后兼容性”要求的一部分。也就是说,针对DALVIK
构建的应用也必须能够在ART
上运行。
如果您在ART系统上运行DVM
应用程序,则在dex2oat
转换应用程序时,您将在第一次运行该消息时看到该消息。如果您构建针对ART
的应用程序,则该应用程序将不再能够在DVM
上运行,但是OAT
转换将在安装过程中发生,并且在运行时看不到。
来源:The Art of Art请注意,这是对ART的三部分调查的一部分,您可能需要检查two和three部分
关于android - Art : Verification of X took Y ms,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37006954/