アプリ開発備忘録

PlayStationMobile、Android、UWPの開発備忘録

2022-06-01から1ヶ月間の記事一覧

【Jetpack Compose】CompositionのSkippableとLayoutフェーズでのパフォーマンス最適化

はじめに Jetpack Composeは変更があった部分だけ、再計算(ReComposition) されます。どのようなときにReCompositionされて、どのようなときにCompositionがSkipされるのかを知っていると、最適なパフォーマンスを得られる手がかりになります。 Jetpack Comp…

【Jetpack Compose】derivedStateOfとremember(key)の使い所

派生Stateである DerivedState を作成する derivedStateOf の使い所についてです。 基本的な使い方 rememberの中で derivedStateOf を使います。その中で State を読み込みます。 これにより、 Stateの counter1 が変化した時にだけ計算が行われます。 var c…

【Deep Jetpack Cpmpose】ReadされたStateObjectを把握する

とあるLambdaの中で読み込まれたStateObjectを把握します。 環境 Jetpack Compose Desktopですが、Androidでも動きは同じはずです。 Runtime 1.1 コード Snapshot.observe で読み込まれたStateObjectを把握する事ができます。 derivedStateOf の内部で使われ…

【Jetpack Cpmpose】スキップ/起動可能性と@NonRestartableComposable【パフォーマンス最適化】

Composableの状態 Composable関数には3つの状態があります。 State1 State2 State3 skippable ○ restartable ○ ○ https://github.com/androidx/androidx/blob/403b6d0032c289ed6e65a1c75f137c07aedd220f/compose/compiler/design/compiler-metrics.md skippa…

【Jetpack Compose Android】LayoutInspectorでRecomposeの状況を見る

LayoutInspectorを使って、Recomposeされているタイミングと場所を把握します。 LayoutInspectorを開きます。 設定 Show Recomposition Counts にチェックを入れます。 Show Recomposition Counts が無い場合は compose runtime のバージョンが 1.2 以上が必…

【ACCESS_COARSE_LOCATION】おおよその位置情報にちゃんと対応する

詳細な位置情報 ACCESS_FINE_LOCATION を取得しようとしても、 ACCESS_FINE_LOCATION ではなく、大まかな位置情報である ACCESS_COARSE_LOCATION が許可される場合があるので、しっかりチェックしましょう。 MainActivity.kt private val launcher = object …

【Jetpack Compose】プレビュー画面では別のものを表示する【isInEditMode】

従来のAndroidのViewでは、プレビュー中なことは isInEditMode でわかります。これのCompose版です。 コード 以下でわかります。 val runningInPreview = LocalInspectionMode.current 使い所 GoogleMapは記事を書いている現状で、プレビューが働かないので…

【Compose Desktop】フレームなしウィンドウを移動させる【1.1.1】

こちらで紹介したので 0.3.0-build150 のバージョンでしたが、 LocalAppWindow が無くなったので、代わりにWindowに与える引数の、WindowStateを使います。 https://matsudamper.hatenablog.com/entry/2021/02/08/025214 コード Compose Desktopのバージョン…

【Jetpack Compose】CoordinatorLayoutのCollapsingを作る

こういうのを作ります。 コード @Composable public fun CollapsingLayout( modifier: Modifier = Modifier, scrollOffset: () -> Int, content: @Composable () -> Unit ) { Layout( modifier = modifier.clip(RectangleShape), content = content ) { meas…

GPG備忘録

GPGのコマンド キーの一覧を確認する gpg --list-secret-keys --keyid-format LONG 出力の意味 sec -> Secret key ssb -> Secret SubKey pub -> Public Key sub -> public Subkey キーを削除する gpg --delete-secret-keys $KEYID サブキーだけ削除する gpg …

【Github Actions】三項演算子やnull合体演算子みたいなことをやりたい

実際にやりたいのはnull合体演算子。 三項演算子はこんな感じ。 ${{ (github.event.pull_request.head.sha != null && github.event.pull_request.head.sha) || github.sha }} 挙動としては、最後に評価された値が有効になるみたい。 なのでnull合体演算子は…