Sobes.tech
Junior — Middle

Ինչ մեթոդներ կարելի է օգտագործել օգտագործողի ինտերֆեյսի ռենդերի գործընթացում ուշացումները ավտոմատ կերպով հայտնաբերելու համար?

sobes.tech AI

Պատասխան AI-ից

Ավտոմատ կերպով հայտնաբերելու համար ձգձգումները օգտագործողի ինտերֆեյսի ռենդերի գործընթացում, կարող եք օգտագործել հետևյալ մեթոդները:

  • API Choreographer: թույլ է տալիս հետևել ֆրեյմերին և չափել նրանց ռենդերի ժամանակը, հայտնաբերելով ֆրեյմերի ձգձգումները (jank):
  • Systrace: պրոֆիլավորման գործիք, որը ցույց է տալիս, թե որքան ժամանակ է պահանջվում յուրաքանչյուր ֆրեյմի ռենդերը և որտեղ են տեղի ունենում ձգձգումները:
  • Profile GPU Rendering: ակտիվացվում է մշակողների ընտրանքներում և ցուցադրում է յուրաքանչյուր ֆրեյմի ռենդերի ժամանակի գրաֆիկ:
  • API FrameMetrics (Android 7.0-ից սկսած): թույլ է տալիս հավաքել մանրամասն վիճակագրություն ֆրեյմերի ռենդերի ժամանակի մասին:
  • StrictMode՝ հիմնական հոսքի մոնիտորինգով, որպեսզի հայտնաբերի երկարատև գործողությունները, որոնք խոչընդոտում են UI-ին:

Օրինակ՝ Choreographer- ի օգտագործումը ֆրեյմերի միջև ժամանակը չափելու համար:

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) { // 16մլս ~ 60հզ
                Log.w("FrameDelay", "Frame took $frameDurationMs ms")
            }
        }
        lastFrameTimeNanos = frameTimeNanos
        choreographer.postFrameCallback(this)
    }
})