Mulai 27 Maret 2025, sebaiknya gunakan android-latest-release, bukan aosp-main, untuk mem-build dan berkontribusi pada AOSP. Untuk mengetahui informasi selengkapnya, lihat Perubahan pada AOSP.
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Pengenalan transisi shell menggabungkan dan menyusun metode
menjalankan animasi dalam sistem, sehingga memungkinkan pengambilan informasi
terpusat terkait animasi yang dijadwalkan untuk dieksekusi.
Rekaman aktivitas transisi mencakup data tentang setiap transisi yang terjadi dalam
shell WindowManager (WM), yang berasal dari sisi server sistem dan
shell. Rekaman aktivitas ini diaktifkan secara permanen di Droidfood dan disematkan secara otomatis
dalam laporan bug.
Untuk mengetahui informasi selengkapnya tentang pengumpulan rekaman aktivitas, lihat
Transisi shell.
Penampil Transisi Winscope menampilkan informasi ini untuk rekaman aktivitas
transisi yang berisi informasi sisi server dan klien. Pelihat terdiri dari tampilan log tabel yang berisi informasi tingkat tinggi tentang transisi di sebelah kiri dan tampilan mendetail untuk setiap transisi di sebelah kanan:
Gambar 1. Analisis rekaman aktivitas transisi shell.
Tampilan tabel
Tampilan tabel berisi:
Id: ID transisi yang hanya dibuat untuk proses debug.
Type: Jenis transisi, seperti yang ditentukan dalam
Transitions.java
Send Time: Stempel waktu saat transisi dikirim dari server ke shell
untuk ditangani.
Waktu Pengiriman: Stempel waktu saat transisi dikirim ke
pengendali untuk mulai diputar.
Durasi: Waktu yang diperlukan transisi dari mulai diputar hingga selesai.
Status: Jika transisi adalah:
PLAYED:: Dimainkan.
ABORTED: Dibatalkan sebelum diputar. Transisi dapat
dihentikan dari sisi shell atau WM.
DIGABUNG: Digabung oleh pengendali transisi ke beberapa
transisi lain yang sudah diputar (pengendali menentukan cara menangani
hal ini).
Tampilan mendetail
Selain detail pada tampilan tabel, tampilan transisi mendetail
di bagian SELECTED TRANSITION berisi:
handler: Pengendali transisi yang menangani animasi ini.
createTimeNs: Stempel waktu transisi dibuat di sisi server WM.
finishTimeNs: Stempel waktu saat sisi server WM diberi tahu bahwa
transisi telah selesai berjalan di sisi shell.
endTransactionId: Transaksi SurfaceFlinger akhir yang disertakan dalam
transisi ini.
startTransactionId: Transaksi SurfaceFlinger awal yang disertakan dalam
transisi ini.
targets: Daftar peserta transisi.
type: Jenis transisi, seperti yang ditentukan dalam
Transitions.java
Target
Target adalah elemen yang terlibat dalam transisi (biasanya aktivitas atau
tugas). Untuk setiap target, kami mencatat:
layerId: Lapisan yang sedang dianimasikan (dari hierarki SurfaceFlinger).
mode: Jenis animasi yang dilakukan pada lapisan ini.
windowId: Jendela yang sedang dianimasikan (dari hierarki WindowManager).
flags: Kumpulan flag baru yang diterapkan ke lapisan.
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-27 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-07-27 UTC."],[],[],null,["# Shell transitions\n\nThe introduction of shell transitions consolidated and codified the method of\nrunning animations within the system, allowing for the retrieval of centralized\ninformation regarding the animations slated for execution.\n\nThe transition trace includes data on every transition that occurs within the\nWindowManager (WM) shell, originating from both the system server and shell\nsides. This trace is permanently enabled in Droidfood and automatically embedded\nin bug reports.\n| **Note:** The transitions are stored in a ring buffer, which is recorded by different processes. As a result, it's possible that portions (usually the initial segments) of a transition might have been removed from the buffer. For example, when sending a transition creation time followed by a start and finish time, the buffer might contain all three segments, only the start and finish times, or even only the finish time. This limitation is consistent with other Perfetto data segments and, similar to Perfetto, the limitation is handled during rendering rather than during data creation or parsing.\n\nFor more information about trace collection, see\n[Shell transitions](/docs/core/graphics/winscope/capture/adb#capture-adb-transitions).\n\nWinscope's Transitions viewer displays this information for transition\ntraces containing both server and client-side information. The viewer consists\nof a table log view containing the high-level information about the transition\non the left and a detailed view for each transition at the right:\n\n**Figure 1.** Shell transition trace analysis.\n\nTable view\n----------\n\nThe table view contains:\n\n- **Id:** Transition ID generated only for debugging.\n- **Type:** Transition type, as defined in [`Transitions.java`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java)\n- **Send Time:** Timestamp the transition was sent over from server to shell to be handled.\n- **Dispatch Time:** Timestamp when the transition is dispatched to the handler to start playing.\n- **Duration:** Time the transition took from starting to play to finished.\n- **Status:** If the transition was:\n - **PLAYED:**: Played.\n - **ABORTED**: Aborted before playing. A transition can be aborted from from shell or WM side.\n - **MERGED**: Merged by the transition handler into some other already playing transition (the handler decides how to handle this).\n\nDetailed view\n-------------\n\nIn addition to the details on the table view, the detailed transition view\nin the **SELECTED TRANSITION** section contains:\n\n- `handler`: The transition handler that handled this animation.\n- `createTimeNs`: Timestamp the transition was created on the WM server side.\n- `finishTimeNs`: Timestamp when the WM server side is notified that the transition has finished running on the shell side.\n- `endTransactionId`: Final SurfaceFlinger transaction included in this transition.\n- `startTransactionId`: Initial SurfaceFlinger transaction included in this transition.\n- `targets`: List of transition participants.\n- `type`: Transition type, as defined in [`Transitions.java`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java)\n\n### Targets\n\nTargets are the elements involved in the transition (normally activities or\ntasks). For each target we record:\n\n- `layerId`: Layer that is being animated (from SurfaceFlinger hierarchy).\n- `mode`: Type of animation performed on this layer.\n- `windowId`: Window that is being animated (from WindowManager hierarchy).\n- `flags`: New set of flags being applied to the layer."]]