Come testare le prestazioni della visualizzazione personalizzata

Aug 19 2020

Desidero testare le prestazioni di rendering dell'interfaccia utente del componente personalizzato. Ho utilizzato il seguente test case per verificare le prestazioni di rendering.

private long getLayoutTime(int layoutRes) {
        final Context targetContext = getInstrumentation().getTargetContext();
        final LayoutInflater layoutInflater = LayoutInflater.from(targetContext);

        final long startTime = System.currentTimeMillis();
        for (int i = 0; i < 1000; i++) {
            final View view = layoutInflater.inflate(layoutRes, null);
            view.setLayoutParams(new ViewGroup.LayoutParams(0, 0));

            view.measure(View.MeasureSpec.makeMeasureSpec(1000, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
            final int measuredHeight = view.getMeasuredHeight();
            final int measuredWidth = view.getMeasuredWidth();

            view.layout(0, 0, measuredWidth, measuredHeight);
        }
        return System.currentTimeMillis() - startTime;
    }

Utilizzando questo codice posso testare i tempi di rendering del layout. Così ho cambiato il design del layout per ottenere prestazioni migliori. Ora sto creando una classe di visualizzazione personalizzata con più layout e componenti come immagini, visualizzazioni di testo e così via. Allegherò la classe in fase di esecuzione e i componenti verranno creati in fase di esecuzione in base alla risposta del server. Non allegherò questo componente personalizzato in XML. Ora voglio testare le prestazioni di rendering di questa visualizzazione personalizzata. Per favore suggeriscimi uno strumento o un modo per calcolare il tempo di rendering dell'interfaccia utente per la visualizzazione personalizzata.

La mia immagine del Profiler.

Risposte

1 EsjayIT Aug 27 2020 at 16:55

puoi misurare facilmente le prestazioni utilizzando il profiler di strumenti integrato di Android Studio (nel pannello in basso a sinistra). importante: le prestazioni di visualizzazione del cliente dipendono da un dispositivo in esecuzione ecco un campione che ho testato per Redmi 7a

dispositivo: redmi 7a RAM: 2 GB

 private fun startTest() {
    for (x in 0..10000) {
        val textview = TextView(this)?.apply { text = "Dummy Text $x" }
        mLinearLayout?.addView(textview)
    }
}
  1. eseguire un progetto
  2. avviare il profiler, attendere che il grafico diventi normale
  3. sul pulsante Fare clic su startTest (), vedrai il grafico diventare normale o alto
  4. selezionare l'area che copre l'area alta del grafico e vedere l'ora di inizio e l'ora di fine
  5. usa una semplice calcolatrice e misura il diff

il risultato del mio test case: l'aggiunta di textview 10000 volte in linearlayout richiede 32.411s (informazioni sul dispositivo fornite sopra)