医療学生のためのアプリ開発講座⑤

アクティビティのコントロール

アクティビティという概念を理解することは、アプリ開発には不可欠です。通常のWindowsパソコンにはないもので、Android特有の機能です。何かの操作をすると、その操作そのものと画面表示の処理を行なっていくオブジェクトであり、Windowsの画面遷移とは違うものです。

 

Windowsで操作するときの遷移とAndroidのそれのとの違いは、まず状況に応じて分岐していく遷移状態があることです。たとえばonPauseonStopの時に使っているのとは違うアプリが大量にメモリを使おうとすると、OSのアクティビティが強制終了することになります。少し複雑になりますので注意してください。

 

ほかにも、インスタンスを一時的に保存したり復帰させたりする機能を持つこと、AndroidOSによって強制終了や再起動が発生してしまうことなどがあります。Windowsでの開発経験のある人にとっては、少し面倒に感じる部分かもしれませんね。

 

アクティビティのリソースの使い方をよく理解するためには、遷移の仕方を分かっておかなければなりません。管理方法は幾つかあるわけですが、たとえば1つの画面に対して1つのアクティビティとしておく、強制終了はよく発生するものと分かったうえでリソースを使用する、複数のアクティビティを重複して利用することを避ける、などがあります。

 

とりわけ強制終了が発生することには注意が必要ですから、アクティビティが強制終了すること前提で、データを保存したり復帰させたり、幾つかのアクティビティ同士でデータを移動させて保護したりする仕組みを活用しましょう。AndroidOSにはそのような機能がついているのです。

 

ここで新たに覚えておきたい点として、「明示的インテント」という機能があります。これはアクティビティを操作するもので、単純な機能のアプリも、もっと本格的で作りこまれたアプリにも用いられます。もうひとつ、「暗黙的インテント」というものもありますが、初心者が主に意識すべきなのは明示的インテントでしょう。

 

アプリを複数アクティビティが扱えるものに変更するためには、そのアプリの主画面のほかに使用する副画面を準備し、ソースコードを用意。その後、戻るボタンを押せば終了するのではなく副画面に移動するように設定し直します。このように主画面から副画面に遷移するとき、startActivityによって他のアクティビティを表示しますが、これが明示的インテントというわけです。

 

AndroidManifest.xmlには、アプリのアクティビティがどんなデータを保存していて、どのように動作するのかという情報が保持されています。これを移動させるソースを組むことによって、データのやり取りも行なうことができます。