26

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

2 に答える 2

10

これは、新しいARTランタイムの「後方互換性」要件の一部のようです。つまり、ニーズに合わせて構築されたアプリは、同様DALVIKに実行できる必要があります。ART

DVMART システムでアプリを実行する場合dex2oat、アプリケーションの変換時に最初に実行するときにこのメッセージが表示されます。を対象とするアプリケーションをビルドするとART、アプリは で実行できなくなりますDVMが、OAT変換はインストール中に行われ、実行時には表示されません。

出典: The Art of Art 注: これは ART の 3 つの部分からなる調査の第 1 部であり、第2部と第3部を確認する必要がある場合があります。

于 2016-05-27T04:13:07.307 に答える