【发布时间】:2020-09-17 12:32:54
【问题描述】:
我的 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 相当多(我觉得我注意到该片段的启动存在延迟)。
我正在使用 RxJava 和 retrolambda,但这不是弹出此消息的唯一位置,因此我认为它没有直接关系。
如何影响验证时间?是否值得?
它似乎与圈复杂性有关,因为我可以通过删除 if 中的 Snackbar.make 调用以及更多 dry 代码来摆脱警告: p>
String errorMessage;
if (errorResponse.code() == ApiResult.BAD_REQUEST) {
errorMessage = getString(R.string.login_bad_credentials);
} else {
errorMessage = "Unknown error " + errorResponse.code();
}
【问题讨论】:
标签: android performance android-runtime