Androidの4つのコンポーネント---抜粋

3789 ワード

Androidが開発した4つのコンポーネントは、次のとおりです.
        Activity,  Service,  BroadcastReceiver,  Content Provider
  • アクティビティ(Activity):機能を表現します.
  • サービス(Service):バックグラウンドでサービスを実行し、インタフェースの表示を提供しません.
  • ブロードキャスト受信機(BroadcastReceiver):ブロードキャストを受信するために使用される.
  • コンテンツプロバイダ(Content Provider):データベースに相当する複数のアプリケーションでのデータの格納と読み取りをサポートします.

  • アクティブ
    Androidでは、Activityはすべてのプログラムの根本であり、すべてのプログラムの流れはActivityの中で実行され、Activityは開発者が遭遇する最も頻繁であり、Androidの中で最も基本的なモジュールの一つでもある.Androidのプログラムでは、Activityは携帯電話の画面を表すのが一般的です.携帯電話をブラウザにたとえると、Activityはウェブページに相当します.ActivityにはButton、Check boxなどのコントロールを追加できます.Activityの概念とウェブページの概念はかなり似ていることがわかります.
    一般的に1つのAndroidアプリケーションは複数のActivityから構成されています.この複数のActivityの間で相互にジャンプすることができます.たとえば、Buttonボタンを押すと、他のActivityにジャンプする可能性があります.Webページのジャンプとは少し異なり、Activity間のジャンプは値を返す可能性があります.たとえば、Activity AからActivity Bにジャンプすると、Activity Bの実行が終了すると、Activity Aに戻り値を与える可能性があります.このようにするのは多くの場合、かなり便利です.
    新しい画面を開くと、前の画面が一時停止状態に設定され、履歴スタックに押し込まれます.ユーザーは、ロールバック操作で以前に開いた画面に戻ることができます.Androidは、各アプリケーションの開始を現在の各画面にスタックに保存するため、保持する必要のない画面を選択的に削除することができます.
    サービス
    Serviceはandroidシステムのコンポーネントで、Activityとのレベル差は多くありませんが、自分では実行できません.バックグラウンドでしか実行できません.また、他のコンポーネントとインタラクティブに使用できます.Serviceはインタフェースのない長寿命周期のコードです.Serviceは長い間実行できるプログラムですが、ユーザーインタフェースはありません.そう言えば少し退屈ですが、例を見てみましょう.音楽プレーヤーのプログラムを開き、この時点でインターネットを利用しようとすると、Androidブラウザを開き、この時点で既にブラウザというプログラムに入っていたのですが、曲の再生は停止せず、バックグラウンドで1曲1曲の再生を続けていました.実はこの放送は音楽を再生するサービスによって制御されています.もちろんこの音楽を再生するサービスは、例えば、プレイリストの中の曲がすべて終了したり、ユーザが音楽の再生を停止するショートカットキーを押したりして停止してもよい.サービスはマルチメディアを再生するときにユーザーが他のActivityを起動したときにプログラムをバックグラウンドで再生し続けるなど、SDカード上のファイルの変化を検出したり、バックグラウンドで地理情報の位置の変化を記録したりするなど、多くの場合のアプリケーションで使用できます.
    サービスを起動するには、次の2つの方法があります.
    (1) Context.startService():サービスはonCreate->onStartを経験します(サービスがまだ実行されていない場合はandroidはonCreate()を呼び出し、onStart()を呼び出します.サービスがすでに実行されている場合、onStart()のみが呼び出されるため、1つのサービスのonStartメソッドが複数回呼び出される可能性があります.StopServiceの場合は直接onDestroyで、呼び出し元自身が直接StopServiceを呼び出さずに終了した場合は、サービスはバックグラウンドで実行されます.このサービスの呼び出し元は、再起動するとstopServiceでサービスを閉じることができます.なお、Contextは複数回呼び出す.startservice()はネストされません(対応するonStart()メソッドが呼び出されても)、同じサービスが何回起動されてもContextが呼び出されるとstopService()またはStopSelf()では、彼は停止されます.補足:StartServiceに渡す(0のIntentオブジェクトはonStart()メソッドに渡されます.呼び出し順序は、onCreate->onStart(複数回呼び出し可能)->onDestroyです.
    (2) Context.BindService():サービスはonCreate()->onBind()を経験し、onBindはクライアントにIBindインタフェースのインスタンスを返します.IBindは、サービスのステータスやその他の操作を得るなど、クライアントがサービスをコールバックできる方法を許可します.このとき呼び出し元(Activityなど)はServiceにバインドされ、Contextが終了するとSreviceはonUnbindを呼び出します.
    ブロードキャスト
    Androidでは、Broadcastはアプリケーション間で情報を転送するメカニズムとして広く使われています.一方、BroadcastReceiverは、送信されたBroadcastをフィルタリングして受信し、応答するコンポーネントの一種である.BroadcastReceiverを使用して、アプリケーションが外部のイベントに応答できるようにします.これは非常に興味深いことであり、例えば、電話がこの外部イベントに呼び出されると、BroadcastReceiverを利用して処理することができる.たとえば、プログラムのダウンロードが正常に完了した場合でも、BroadcastReceiverを使用して処理できます.BroadcastReceiverはUIを生成できない,すなわちユーザにとって透明ではなく,ユーザには見えない.BroadcastReceiverは、NotificationManagerを通じてユーザーにこれらのことが発生したことを通知します.BroadcastReceiverはAndroid Manifestでもいいです.xmlに登録し、実行時のコードにContextを使用することもできます.registerReceiver()を登録します.登録されている限り、イベントが来ると、プログラムが起動しなくても、システムは必要に応じてプログラムを起動します.各種アプリケーションはContextを使用することもできる.sendBroadcast()は、独自のIntent Broadcastsを他のアプリケーションにブロードキャストします.
    しげん
    Content Providerは、Androidが提供するサードパーティアプリケーションデータへのアクセススキームです.
    Androidでは、データの保護が厳重で、SDカードに置かれているデータを除いて、1つのアプリケーションが持っているデータベースやファイルなどの内容は、他の直接アクセスは許可されていません.Andoridはもちろん、すべてのアプリケーションを孤島にすることはありません.すべてのアプリケーションに窓を用意しています.これがContent Providerです.外部に提供したいデータを適用するには、Content Providerクラスを派生することによって、Content Providerにカプセル化することができ、各Content Providerは1つのuriを独立した識別として、content://com.xxxxx.すべてがRESTのように見えますが、実際にはRESTよりも柔軟です.RESTと同様にuriには2つのタイプがあり、1つはid付きであり、もう1つはリストであるが、実装者はこのモードで行う必要はなく、idのuriにリストタイプのデータを返すこともでき、呼び出し者が理解すれば、いわゆるRESTを厳しく求めなくてもよい.