LeoAndo / development-conference-memo

0 stars 0 forks source link

Modifier.Nodeを使いましょう #418

Open LeoAndo opened 8 months ago

LeoAndo commented 8 months ago

https://youtu.be/_ux4u8OKZUw?t=3882 Modifier.composedに問題があって、Modifier仕組みのリファクタリングを発表! by android dev summit 22

現在、Modifier.composedは削除された! https://youtu.be/_ux4u8OKZUw?t=3894

LeoAndo commented 8 months ago

Modifier.composedのパフォーマンス問題

RuntimeのSmart Recomposition

Compositionは@Composable関数がノードになっているツリーです。

各フレームでツリーのすべてのノードを訪れるより、RuntimeがCompositionツリー全体を観察し、変更が行われた@Composable関数のみを再呼び出しする仕組みをSmart Recompositionという。

LeoAndo commented 8 months ago

Smart Recompositionの条件

1

https://youtu.be/_ux4u8OKZUw?t=4034 Unitを返す@Composableのパラメータが変更されなかったらスキップする

スクリーンショット 2023-10-02 21 06 48

2

https://youtu.be/_ux4u8OKZUw?t=4051 Unit以外を返す@Composableをスキップできない

スクリーンショット 2023-10-02 21 07 52
LeoAndo commented 8 months ago

旧Modifierの仕組み

LeoAndo commented 8 months ago

Modifier.composedが追加された理由

元々、ModifierはStateを保持しないAPIの設計だった。 Modifierにstateを持たせるためにModifier.composedが生まれた!

LeoAndo commented 8 months ago

Modifier.composedの問題点

https://youtu.be/_ux4u8OKZUw?t=4190

LeoAndo commented 8 months ago

Modifier.Nodeの紹介