前回でAndroidアプリのHello World!をやりましたが、
その中でActivity(アクティビティ)という知らない単語が出てきたので意味を調べてみました。
調べてみた結果
こちらの公式サイトを御覧ください(2回目)
では味気ないので…。
自分に必要そうな内容をちょっと簡単にまとめてみました。
アクティビティとメインアクティビティ
アクティビティとはユーザーに操作を提供する画面のことを指します。
つまりボタンとかラベルとかじゃなくて、
画面そのものの事らしいです。
通常、アプリは複数のアクティビティ(画面)で構成されているので、
どれか1つのアクティビティが「メイン」アクティビティとして指定されます。
このメインアクティビティがアプリ起動時に表示されるアクティビティ(画面)になるようです。
アクティビティのライフサイクル
アクティビティから新しいアクティビティが呼ばれた場合、
呼び元のアクティビティは停止します。
この時、停止するアクティビティの状態変化がコールバックメソッド経由で通知されます。
そこでNW接続やDB接続などの大きなリソース開放を行うが出来ます。
(同じアプリであればDBは繋ぎっぱなしで良い気もするけども…)
新しいアクティビティで戻るボタンを押下するなどして操作が完了した場合、
そのアクティビティは破棄されてスタックに積んでいた呼び元のアクティビティが再開します。
この時も状態変化がコールバックメソッド経由で通知されます。
(NW接続などリソースの再取得などができるように)
アクティビティ作成時の注意点
- onCreateメソッドは必須。
- さらにその中でsetContentViewメソッドを叩いてUI1のレイアウトを定義する必要がある。
- アクティビティがシステムにアクセス出来るようにするにはマニフェストに宣言する必要がある。
アクティビティの表示とインテントについて
マニフェストに宣言する際にはInten(インテント)2を定義します。
インテントとはアクティビティを呼び出すときに使用されるメッセージオブジェクトのことらしい。
アクティビティを開始する際にはこのインテントをContext.startActivity()に渡せば良いらしい。
このContextはアクティビティやApplicationの親クラスだそうで。
たぶんApplicationオブジェクトのstartActivityにわたすと新しいアクティビティが実行される、みたいな感じ?
実装の例を見ると暗黙で実行されるのがApplicationオブジェクトっぽい。
インテントの指定には正確にアクティビティを指定するかその動作を指定するかの2種類があります。
後者の動作を指定するタイプでは他のアプリケーションも呼び出せるらしい。
例えばメールを送るみたいな動作で呼び出すとメールアプリが立ち上がるみたい。
(複数あれば選択も可能だが無いとハングするらしい…)
終わりに
Activityとは?というところで調べ始めましたが、
結果的にアプリの画面まわり(の基礎)の勉強になりました。
いま作ろうとしているアプリは最大4画面になりそうなので、
アクティビティは4つになるのかなぁ。
次はアクティビティに乗せるUIの勉強になりそう。
ViewModelはこのアクティビティのJavaファイルの事なのか、
他にオブジェクトを作ったほうが良いのか…。
こういうのが書いてある資料が無い(あるいは見つからない)んだよなぁ…。