LeoAndo / development-conference-memo

0 stars 0 forks source link

Debugging Jetpack Compose #322

Open LeoAndo opened 1 year ago

LeoAndo commented 1 year ago

https://io.google/2023/program/a3ed5302-d787-41bd-8623-54193d36caf0/intl/ja/ https://www.youtube.com/watch?v=Kp-aiSU8qCU

LeoAndo commented 1 year ago

Debugging Mindset

LeoAndo commented 1 year ago

よくある質問

なぜこのコンポーザブルは再構成されるのか?

様々なタイプの再構成

スクリーンショット 2023-05-22 14 34 44 スクリーンショット 2023-05-22 14 35 17

間接的の場合は、コンポーザブルがStateオブジェクトを直接読み取っていない場合に発生する

スクリーンショット 2023-05-22 14 36 34

カウントを使用して以前と同じ直接再構成を行い、カウントが変更された時にTextを更新します。 数値のリストを受け取る追加のリストコンポーザブルがあります。カウントの変更により、このコンポーザブルが再構成される場合、入力が変更されていないため、MyListコンポーザブルは再構成されないと予想されるが、現在のJetpack Composeでは再構成される。 Listは不変性を保証できないため、不安定な型です。従ってMyListコンポーザブルはその親が再構成される時にも再構成されます。

スクリーンショット 2023-05-22 14 37 57

上記のコンポーザブルの挙動をデバッグしやすくするために、Android Studioの新機能「デバッガーでの再構成状態の共有」ができるようになった! 使い方 Demo

ステートの一覧表

スクリーンショット 2023-05-22 14 46 24
LeoAndo commented 1 year ago

https://github.com/LeoAndo/development-conference-memo/issues/322#issuecomment-1556570578 このデバックの場合、頻繁に再構成するもの(スクロールやアニメーション)には不向きである。 その場合は、ログを活用しよう! https://youtu.be/Kp-aiSU8qCU?t=381

スクリーンショット 2023-05-22 14 53 01

ログ出力のダメなパターン

ログ出力にStateを持っているために、値が変化すると再構成されてしまう。

スクリーンショット 2023-05-22 14 54 34

OKパターン

https://youtu.be/Kp-aiSU8qCU?t=428 SideEffectを使用しよう!

スクリーンショット 2023-05-22 14 56 36
LeoAndo commented 1 year ago

フォントサイズの話

スクリーンショット 2023-05-22 15 02 11

Android StudioのVisual lintを使ってComposeプレビューでこの潜在的な問題を回避しよう!

マテリアルとアクセシビリティを念頭に置いて最適化できるということ

LeoAndo commented 1 year ago

UIジャンクの話

https://youtu.be/Kp-aiSU8qCU?t=718 この例の場合、 ListをPersistentListに置き換えてジャンクの対応を行った。 PersistentListは完全に不変でありコンポーザブルをスキップできる。 これからはPersistentListを使う方向性なのか??

LeoAndo commented 1 year ago
スクリーンショット 2023-05-22 15 17 59

https://youtu.be/Kp-aiSU8qCU?t=790 不安て不安定な型の再構成に悩んでいる場合は、上記のブログを参考にすること!

LeoAndo commented 1 year ago

https://developer.android.com/jetpack/compose/tooling/tracing https://youtu.be/Kp-aiSU8qCU?t=888 System tracing

LeoAndo commented 1 year ago

要約