2016-05-03 11 views
7

ich eine Warnung in meinem logcat haben:Art: Überprüfung der X nahm Y ms

W/art: Verification of void com.myapp.LoginFragment$override.lambda$logIn$5(com.myapp.LoginFragment, java.lang.Throwable) took 217.578ms 

Hier ist der Code:

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 ist ziemlich viel (und ich fühle mich wie ich bemerke eine Verzögerung beim Start dieses Fragments.

Ich benutze RxJava und RetroLambda, aber dies ist nicht der einzige Ort, an dem diese Nachricht erscheint, so dass ich glaube nicht, dass es direkt verwandt ist.

Wie kann ich die Überprüfungszeit beeinflussen? Ist es das überhaupt wert?

Es scheint, wie es etwas mit zyklomatische Komplexität zu tun hat, da ich durch das Entfernen der Snackbar.make Anrufe in den if mit etwas mehr trocken Code des waring loswerden kann:

String errorMessage; 
if (errorResponse.code() == ApiResult.BAD_REQUEST) { 
    errorMessage = getString(R.string.login_bad_credentials); 
} else { 
    errorMessage = "Unknown error " + errorResponse.code(); 
} 

Antwort

4

Es sieht aus wie Dies ist Teil der Anforderung zur Abwärtskompatibilität für die neuere ART Laufzeit. Das heißt, Apps, die gegen DALVIK erstellt wurden, müssen auch unter ART ausgeführt werden können.

Wenn Sie eine DVM App auf einem ART-System ausführen, wird diese Meldung beim ersten Mal angezeigt, wenn dex2oat die Anwendung konvertiert. Wenn Sie die Anwendung mit dem Ziel "ART" erstellen, kann die App nicht mehr unter DVM ausgeführt werden. Die Konvertierung erfolgt jedoch während der Installation und wird zur Laufzeit nicht angezeigt.

Quelle: The Art of ArtNote ist dieser erste Teil einer dreiteiligen Untersuchung von ART und Sie können Teile überprüfen müssen two und three

+0

vielen Dank für den Artikel, sie werde – Lovis

+0

ich das sehe Besuche Nachricht * jedes Mal * die App läuft, nicht nur beim ersten Mal. Ich sehe die Nachricht, beende die App, starte sie erneut und sehe die Nachricht erneut. – zyamys