Anatomy of an Android Application-Androidアプリケーションの4つのブロックを分析


Anatomy of an Android Application-Androidアプリケーションの4つのブロックを分析する原則としてAndroidのアプリケーションは次の4つのブロックからなる
  • Activity
  • Broadcast Intent Receiver
  • Service
  • Content Provider

  • すべてのAndroidプログラムにこの4つの部分が必要なわけではありませんが、上記の4つの項目から組み合わせられています.プログラムにこれらの要素を置くことを決めたら、AndroidManifestに明確に列挙する必要があります.xmlというファイルにあります.だからこのxmlファイルでは、使用する要素を宣言し、それらが持っている能力と需要を明確に指摘する必要があります.manifestファイルのもっと詳しい内容は私の下に簡単なmanifestを出してください.xmlの例、この例のプログラムは1つのActivity素子を置くだけです
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.my_domain.app.helloactivity">
    <application android:label="@string/app_name">
    <activity android:name=".HelloActivity">
    <intent-filter>
    <action android:name="android.intent.action.MAIN"/>
    <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
    </activity>
    </application>
    </manifest>

    (1)Activity:Activitiesは4つの素子の中で最もよく用いられる.Activityはあなたのプログラムに通常1つの画面(single screen)が表示されます.各Activityは実際にカテゴリを作成し、このカテゴリはActivityというベースカテゴリから継承されます.あなたのこのカテゴリは、ユーザーインタフェースを表示するには、ビジュアルコンポーネント(Views)と応答イベント機能を組み合わせる必要があります.ほとんどのプログラムはマルチ画面(multiple screens)で構成されています.例えば、1つの文字メッセージ伝送プログラムには、伝送可能なメッセージを表示するための連絡先リストがあり、1つの画面は伝送するメッセージの内容を入力し、もう1つの画面は古いメッセージの内容を調べたり、プログラムの設定画面を変更したりするために使用されます.各画面はActivityに実作されます.別の画面は、別のActivityを起動することです.場合によっては、Activityは前のActivityに値を返すことができます.たとえば、Activityがユーザーに写真を選択させ、前のActivityユーザーにその画像を選択したことを伝えることができます.新しい画面が表示されると、前の画面がpauseの状態になり、システムはそれを履歴スタックに入れます.歴史の積み重ねがあれば、利用者は簡単に前の画面に戻ることができます.画面が不要になった場合は、スタックから削除することもできます.Androidはこの歴史的に積み重ねられた資料を管理し、ホーム(Home)画面から実行されるすべてのアプリケーションが管理されます.Intent and Intent Filters:Androidは、ある画面から別の画面にジャンプするための特別なカテゴリを使用しています.Intentは、プログラムが何をしたいのかを説明するために使用されます.Intentの資料構造には2つの重要な部分があり、1つは動作(action)と資料に反応する(data to act upon).Actionの主な内容はMAIN,VIEW,PICK,EDITなどである.dataはURIの形で表される.例えば、一人の連絡先を表示するには、VIEWの動作(action)とその人の資料を指すURI記述文を含むIntentを作成する必要があります.もう一つの関連カテゴリはIntentFilterです.Intentが何かを要求すると、IntentFilterはこのactivityが何ができるかを説明するために使用されます.例えばactivityが個人情報を表示できるようにするには、IntentFilterで個人情報をどのように処理するかを説明し、ACTIONを使用する必要があります.VIEWが現れます.IntentFilterはAndroid Manifestで宣言します.xmlファイルにあります.画面の切り取りはresolving intentによって実現される.新しい画面を生成したい場合は、現行のactivityでstartActivity(myIntent)を使用します.その後、システムはインストールされているすべてのプログラムによって定義されたintent filterからそのプログラムがmyIntentに最も適していることを見ることができます.startActivityが呼び出されると、resolving Intentsの処理プロセスが伴う.resolving intentは、ActivitiesがIntentの方法で他のプログラムの機能を簡単に使用できるようにする2つのメリットを提供しています.Activitiesを任意の状況で新しいActivityに置き換えやすくします.まず次の例を見てみましょう.onClickイベントが発生したときにIntentを使用して開くことを目的としています.http://stenlyho.blogspot.com/このページでは、2つのことをすることに気づきます.URI資料2を設定する.uriとactionを新しいIntentに渡し、ここのactionはviewで、最後にstartActivity(intent)がintentを実行します.しかし、プログラムを書く常識から推測すると、ウェブサイトをブラウザに伝えるはずなのに、なぜブラウザを実行する動作を見ていないのか、Intentだけなのか.これがresolving Intentの機能ですね!実はあなたがWindowsで注文したようです.docファイルの場合、自動的にwordを呼び出します.txtファイルの場合、自動的に手帳のような機能が使われます.resolving intentはuriの内容がhttpで始まるので、actionがVIEWである場合は、browserを直接実行して設定したURL viewを見せます.
    public void onClick(){
    Uri uri = Uri.parse("http://stenlyho.blogspot.com/");
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);
    }

    (2)Broadcast Intent Receiver:プログラムを書いて外部のイベントを処理したい場合は、Broadcast Intent Receiverを使用します.例えば、電話が鳴ったとき、ネットの資料が使えるとき、夜中に来たときなどです.Broadcast Intent Receiver UI画面を表示することはできません.NotificationManagerを使用して、ユーザーに興味のあるイベントが発生したことを通知する必要があります.Broadcast Intent ReceiverもAndroidManifestで定義できる.xmlファイルには、Contextと書くこともできます.registerReceiver()プログラムは、自分のBroadcast Intent Receiverを登録します.あなた自身のプログラムはBroadcastReceiversが呼び出されたために実行されることはありません.BroadcastReceiverがトリガーされると、システムは必要に応じて対応するプログラムを実行します.プログラムはContextを利用できる.sendBroadcast()は、独自のintent broadcastを他のプログラムに送信します.(3)サービス:サービスはUI表示画面を持たないプログラムであるが,長期にわたってシステム内で実行できる.マルチメディアプレーヤーの例を挙げると、1つのメディアプレーヤーには1つ以上のactivitiesが存在し、使用者が歌を選択したり、歌を再生したりすることができる.しかし、activityで再生することはできないかもしれません.使用者は歌を再生し続けることを望んでいるかもしれません.同時に、歌を聴きながら、ホームページをぶらぶらしているなど、他の画面を見に行くかもしれません.この場合、Contextを使用する必要があります.startService()は、音楽の継続的な再生を維持するためにプログラムをバックグラウンドで実行します.システムは音楽を終了するまで再生した状態を維持します.バックグラウンド状態に入るとContextを利用できます.bindService()は、Serviceと接続します.正しく接続すると、このサービスが開いているインタフェースを通じてコミュニケーションすることができます.音楽を流したばかりの例では、サービスは再生を一時停止したり、逆転したり、速く回転したりする機能を開放するはずです.(4)Content Provider:アプリケーションは、それらの資料を1つのファイルに保存したり、SQLiteリポジトリに保存したり、他のメカニズムに保存したりすることができます.プログラム資料が他のプログラムで使用されることを望む場合、Content Providerは非常に役立ち、Content Providerはアプリケーション間で資料を共有することを実現します.詳細については、Accessing Content Providersを参照してください.