#記事概要
本記事では、初めてのAndroid開発に於いて、私が「そんな仕様なのね」と、逐一詰まった部分を纏めようと思う。
強いてこのページの対象読者を示すなら、初のAndroid開発で、何か知ってた方が良いことはあるか?と考えている人。
基本的には自分向けの備忘録である。そのため、今回の開発をスムーズに行えるようになった時点での解釈を記載する。
#本題
それでは、以下に詰まった箇所と、解決後のそれらに対する解釈について記載していく。
##Activity
PC向けアプリ開発でよく言われる「画面」に相当すると解釈。
アプリを起動したら出てくる奴らで、ユーザインタフェースに相当し、以下の特徴がある。
###Activityのライフサイクル
Activityが呼び出されてから居なくなるまで、大まかに説明すると以下のようになる。
####Activityの作成
onCreateメソッドが呼び出されてActivityが作成される。
アプリを作るにあたっては、このメソッドをオーバーライドして処理を記載した。
今回はPC向けのアプリ開発に於けるメインメソッドの感覚で扱った。
####Activityの実行
onStartメソッドが呼び出されて作成されたActivityが実行される。
特に明示的に呼び出す必要はなく、onCreateが完了するとそのまま実施される。
####Activityの終了
onDestroyメソッドが呼び出されてActivityが終了する。
タスクキル時をはじめ、メモリを解放するために呼び出される。要するに終了処理。
特に明示的に処理を記載する必要はない。
と、大体こんな感じで扱った。実際はこのほかにonResume・onPause・onStopがあるわけだが、これらは意識せず今回作成したプログラムは作成できたため、割愛する。
###何が何でもここ(Activity)に物を載せる
ちょろっと感じたのが、何かにつけて表示するにはここに載せる必要があるということだ。
主にAlertDialogを表示するときに感じたのだが、何もないところに直接それを表示することはできない。
何かしら画面上に表示したかったら、兎に角Activityを作り上げてそこに載せる必要がある。
だから、背景が見えるようにダイアログを表示するには、裏で走ってるserviceとかに、背景を透過したActivityを呼び出させる必要があった。
##スレッド
HTTP通信を頑張ってみてた当初に引っかかった制限事項。
メインアクティビティで呼び出された処理は、何もなければメインスレッドで処理される。そしてここでは時間がかかる処理が実施できない。
つまり、ここで相手のレスポンスを待つ行為が発生し時間がかかるHTTP通信処理が実施できなかった。
そのため、別スレッドを実施するserviceを継承したクラスと、裏で処理を走らせてくれるAsyncTaskを継承したクラスを用いることにより実施した。
しかし何となく「わざわざ継承されたクラス作らずとも、新しいスレッド作れば行けるんじゃね?」とか思ったが、今回は試さなかった。
##XMLファイルたち
正直、こいつらの存在が一番苦戦した。雑ながら、それぞれのファイルについてちょっと言及しとこうと思う。
今回触ったのは以下のファイルたち。
###AndroidManifest.xml
基本的なアプリケーションのルールを記載する箇所。
具体的に言うと、バックグラウンドでの処理や、インターネットの接続を許可したり、ActivityのStyleを設定したりする。
###styles.xml
名前の通り、AndroidManifest.xmlで設定するStyleの設定、作成を行う。
例えば、完全に透過したActivityを作成する場合、こちらでそのStyleを作成し、Manifestで設定すると言った具合だ。
#あとがき
以上、初のAndroidアプリ開発で詰まった部分と解決後の解釈一覧でした。
裏取りをちゃんとやったわけではないので、間違っている可能性がある点だけご注意ください。
一応、参考にしたページは以下になります。
アクティビティの概要
https://developer.android.com/guide/components/activities/intro-activities