Sobes.tech
Junior — Middle

Milyen módszerek használhatók az felhasználói felület renderelési folyamatában fellépő késések automatikus felismerésére?

sobes.tech MI

Válasz az MI-től

Az Androidon a felhasználói felület renderelési folyamatában bekövetkező késleltetések automatikus felismeréséhez a következő módszerek használhatók:

  • Choreographer API: Lehetővé teszi a képkockák követését és azok renderelési idejének mérését, így azonosítva a képkocka késéseket (jank).
  • Systrace: Profilozó eszköz, amely megmutatja, mennyi időt vesz igénybe minden egyes képkocka renderelése, és hol fordulnak elő késések.
  • Profile GPU Rendering: Fejlesztői beállítások között aktiválható, és megjeleníti az egyes képkockák renderelési idejének diagramját.
  • API FrameMetrics (Android 7.0-tól): Részletes statisztikákat gyűjt a képkockák renderelési idejéről.
  • StrictMode: A fő szál monitorozásával hosszú műveleteket azonosít, amelyek blokkolják a UI-t.

Példa a Choreographer használatára a képkockák közötti idő méréséhez:

val choreographer = Choreographer.getInstance()
choreographer.postFrameCallback(object : Choreographer.FrameCallback {
    var lastFrameTimeNanos = 0L
    override fun doFrame(frameTimeNanos: Long) {
        if (lastFrameTimeNanos != 0L) {
            val frameDurationMs = (frameTimeNanos - lastFrameTimeNanos) / 1_000_000
            if (frameDurationMs > 16) { // 16ms ~ 60fps
                Log.w("FrameDelay", "Frame took $frameDurationMs ms")
            }
        }
        lastFrameTimeNanos = frameTimeNanos
        choreographer.postFrameCallback(this)
    }
})