Programming Style

メニュー

初心者がアプリ開発者になるためのプログラミング学習サイト

[Android] Activitiyの概要と生成方法について

android-common-top

Activity(アクティビティ)は、ユーザが操作する画面を提供するコンポーネントです。ここでは、Activityの概要とActivityの生成方法について説明します。

 

広 告

 

目次

前提条件

  • 特になし

動作確認端末

  • 特になし

1. Activityの概要

Activityとは画面を提供するコンポーネントです。通常Androidアプリケーションは、複数のActivity(画面)によって構成されます。

 

一般的にひとつのActivityがメインのエントリーポイントとして指定され(例外もあります)、そのActivityがアプリケーション起動した時に表示されるActivityになります。

 

android_android-activity_01

Activityは他のActivityを起動させることができます。新しいActivity(②)が開始されると、前のActivity(①)はバックグランドにまわり、停止した状態になります。

更に新しいActivity(③)が開始されると、前のActivity(②)はバックグランドにまわります。この時、前のActivityと(②)と、もっと前のActivity(①)はバックスタックにつまれていきます。

 

Note : ここでいうスタックとは、プログラミングで扱う基本的なデータ構造の1つです。最後に入力したデータが先に出力されるという特徴をもちます。「最後に入ったデータが最初に出力される」というデータの入出力方式は「Last In, First Out」を略して、LIFOと呼ばれます。

 

 

 

 

2. Activityを生成する

Activityを生成するためには、Activityクラスのサブクラスとしてクラスを作成する必要があります。

(Android Studioでプロジェクトを新規作成した時、ほとんどの場合は自動で生成されています)

 

作成したActivityには、Activityのライフサイクルの状態(例えば、Activityが生成された時、停止した時、再開した時、破棄された時など)が遷移した時に、システムから呼ばれるコールバックメソッドを実装する必要があります。

 

以下の2つのコールバックメソッドは、その中でも重要なものです。

 

onCreate()
Activiyに必須なメソッドです。Activityが生成された時にシステムから呼ばれるメソッドです。
このメソッドの中では、Activityにおいて必要不可欠なコンポーネントを初期化します。もっとも重要なのが、setContentView()メソッドを使って、画面のレイアウトを設定することです。
onPause()
ユーザがActivity(画面)から離れた時に最初にシステムから呼び出されるメソッドです。このメソッドが呼ばれたからといって、Activityが破棄されるとは限りません。破棄された時に呼ばれるコールバックメソッドは別にあります。
このメソッドの中では、ユーザがまた画面に戻った時にも永続的に表示させたいデータをデータベースやプリファレンスに保存する処理を実行します。

 

他にもライフサイクルメソッドはあります。Activityが予期せず停止した時、破棄された時などをハンドリンクしたい場合などに利用します。

 

 

 

 

3. ユーザインターフェースを実装する

Activityのユーザインターフェースを実装するためには、setContentView()メソッドを使用します。このメソッドには、レイアウトXMLのリソースIDが設定でき、画面にレイアウトXMLで定義したレイアウトを表示させることができます。

 

また、あまり一般的ではありませんが、ViewクラスやViewGroupクラス(またはそれらのサブラクス)のオブジェクトを生成し、setContentView()メソッドに設定することでレイアウト表示させることもできます。

 

レイアウトに関しては、ユーザインターフェスの概要を参考にしてください。

 

 

 

 

4. マニフェストにActivityを宣言する

システムからActivityとして認識されるためには、マニフェストファイルにActivityを宣言しなければなりません。

 

Activityを宣言するためには、<activity>要素を<application>要素配下に追加します。

以下にActivityを宣言するための記述例を示します。

 

src/main/AndroidManifest.xml

<manifest ... >
  <application ... >
      <activity android:name=".MainActivity" />
      ...
  </application ... >
  ...
</manifest >

 

タグにはandroid:name属性が必須になります。この値は、どのクラスがActivityであるかをパッケージ名とクラス名で指定しています。

 

<activity>タグには、他にもラベル名、アイコン、テーマを設定するための属性があります。

 

 

 

 

5. IntentFilterを設定する

<activity>要素配下に<intent-filter>要素に追加することで、他のアプリケーションやシステムからActivityを動作させるための方法を宣言することができます。

 

Android Studioでプロジェクトを新規作成すると、以下のような記述がされたマニフェストファイルが自動生成されると思います。

 

src/main/AndroidManifest.xml

<activity android:name=".MainActivity" android:icon="@drawable/app_icon">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

 

ここの<action>要素では、Activityがアプリケーションのメインのエントリーポイントであることを指定しています。

ここの<category>要素では、ホームアプリのアプリランチャーから起動されるActivityであること指定しています。

 

 

 

 

 

広 告