アート: Xの検証にはYミリ秒かかりました 質問する

アート: Xの検証にはYミリ秒かかりました 質問する

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();
                 }
            );

220 ミリ秒はかなり長いです (また、そのフラグメントの起動時に遅延が発生しているように感じます)。

私は 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();
}

ベストアンサー1

2020 年以降に解決策を探している人のために、Android 11 の開発者オプションには次の設定があります。

ここに画像の説明を入力してください

デフォルトではオンになっています。デバッグ時にアプリを起動するたびに発生する煩わしい遅延をなくすには、オフにしてください。

おすすめ記事