Android(Jetpack Compose)のお勉強
ある程度、把握しているのと最速で動かしながら学びたいので、
- レッスン 1: 初めてのアプリの作成
- レッスン 2: レイアウト
は読むだけでCodelabまでは行わない
Step1-3 ナビゲーション
Activity という概念があって、その上で手をかえ品を変え色々な表示をしていくことで、アプリができているらしい。
当てはめるとするならば、Webページに相当するものが、Activityといったところであろうか。
: Android アプリのアクティビティは複数にすることもできますが、これまでこのコースで実装しているように、アクティビティは 1 つにすることをおすすめします。
さて、Webページ = Activity として考えると、さながらSPAっぽく扱うのが、推奨ということだろう。
Q: ページ遷移的なことはどうするのだろうか。
Step1-3.a ライフサイクル
どうやらライフサイクルという概念があるらしい、
- initialized
- created
- started
- resumed
- destroyed
というライフサイクルがあるらしい。
ライフサイクルに関して考えると、Webアプリとの決定的な違いとして、中断と再開の概念があることだろう。
バックグラウンドにして中断したり、フォアグラウンドにしてフォーカスして再開したり、というやつのようである。
見た目上は、フォーカスフォアグラウンド・アンフォーカスフォアグラウンド・バックグラウンドの3種類があり、そこにアプリケーションの開始・終了という概念を合わせて、ライフサイクルの文脈で考えてあげると、上述の5つの状態と表してあげるといい、ということか。
ここで、stateについて考える必要が出てくる。
ライフサイクルの変更は、OS都合であったりでちょくちょく発生する。そのため、デバイス上でオンメモリ保管されたデータは各種の再表示や再コンポーズの際に揮発しないようにする必要がある。
再コンポーズで揮発してほしくないものは、 remember を、構成の変更(画面回転など)があっても保持したいものには rememberSaveable を適用することとなる
※ rememberSaveableを常に使えば良いか?という疑問が湧くわけだが、ちょっと調べたり考えたりすると下記が考慮事項になりそうなので、常にrememeberSaveableが正義というわけではなさそう
- 対応外のクラスを保存する場合は、それ用の実装が必要となる
- ローカルにステートを持ち過ぎてしまう
- アクティビティが破棄されようがステートが残ってしまう