setInterval(()=>null,0) makes any animation much smoother
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- android, javascript
- Bereich
- mobile-dev, performance
Rechercherichtung
Beginne damit, das verlinkte NativeScript Playground unter Android mit aktiviertem Profile GPU rendering zu reproduzieren, und vergleiche dabei den leeren Bildschirm, setInterval(..., 0) und die Fälle mit Choreographer.postFrameCallback. Verfolge anschließend die Einstiegspunkte der Android-Laufzeit für die Zeitplanung von setInterval und Choreographer. Die Aufgabe ist abgeschlossen, wenn der Unterschied bei der Bildrate erklärt oder korrigiert wurde und der Vergleich auf den gemeldeten Geräten überprüft wurde.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Environment
- CLI: 6.1.2
- Android Runtime: 6.0.2 / 6.1.2
Describe the bug
I'm working on custom animation (screen blinking at 60fps) on Android, and I was very surprised that using of stupid setInterval(() => {...}, 0) works much better that the native android's Choreographer.
With setInterval(() => {...}, 0) I've got stable 60 FPS even on android 5 devices, but with Choreographer (that should work much efficiency, code below) I got drops to 50 FPS on powerful OnePlus 6 on Android 9.0
android.view.Choreographer.getInstance().postFrameCallback(...);
But if I write down setInterval(() => null); near the Choreographer callback definition - I will achieve stable FPS and low GPU utilisation (LOL, right?).
To Reproduce
I have created app on playground where everybody can test it. Turn on 'Profile GPU rendering' - 'On screen as bars' in 'developer options' menu and launch this simple app with simple loader on 2 pages - one with absolutely empty component, another one with setInterval(() => {}, 0) in OnInit.
Sample project
Nativescript Playground
Additional context
I've recorded animations to demonstrate this behaviour Imgur
And my question on StackOverflow (without any answer) link
- Vorherrschende Sprache
- C++
- Sterne
- 563
- Forks
- 144
- Ø Merge
- 10 Std. 46 Min.
- Gemergte PRs (30 T.)
- 14
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus NativeScript/android
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 38/100
NativeScript/android#2039 · 1 Kommentar ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
NativeScript/android#2024 ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 20/100
NativeScript/android#2020 ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 42/100
NativeScript/android#2019 ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 55/100
NativeScript/android#1986 ·
Alle Issues in NativeScript/android
Ähnliche Issues
-
ai_reviewed
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
ydb-platform/ydb#53869 · 3 Kommentare ·
-
bug cert blocker needs triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
project-chip/connectedhomeip#74373 ·
-
[request] tracy/0.14.1 Offenupstream update
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
conan-io/conan-center-index#31035 ·
-
Bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
-
documentation
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 85/100
vllm-project/vllm-ascend#17329 ·