スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Andoroid 開発ガイドを読みながらの走り書き1

Android開発ガイドを読んでいるので、とにかく走り書き(- -;)""
意味わからなかったらゴメンなさい (- -;)""

開発の基礎(序章)
[言っていること]
・Javaアプリケーションで記述される。
・提供される"aaptツール"を使用して実装する。
・拡張子は、".apk" 
・".apk"ファイルをデバイス(スマートフォン等)にダウンロードして利用する。
・".apk"ファイルがウィンドウズでいう、".exe"ファイル
・プラットフォームはLinux
・JavaVM上で、実行されるため、他のアプリケーションからは独立されている。
・".apk"ファイルの実行プロセスは、プロセスIDが振られ、権限が設定されている。
・2つの".apk"ファイルで同じユーザIDを持つことは可能。
その場合は、2つのアプリケーションを相互に認識することが可能。

つまり、Linuxチックにプロセス管理して、JavaVM上で動いているってことかな。


アプリケーションのコンポーネント
[ここで使われる用語]
・コンポーネント    →  インスタンス化できるソフトウェア部品。 
                             オブジェクト思考でいうオブジェクト。
・アクティビティー  →  UI部品。
・ビュー               →  アクティビティーの(ほぼ)基底クラス。
                              WindowsでいうControl?
・サービス            →  バックグラウンドで動くスレッド。  
・バインド            →  接続。問い合わせ。
・ブロードキャスト  →  他のアプリケーションへの一斉通知。
                              (「言い広める」という意味)
・プロバイダ         →   データ格納するもの。ファイルやDB等。

[言っていること]
・許可があれば、他のアプリケーションを利用できる。
   他の人が開発したソフトウェア部品を使うことができるってこと。
   使用するには、そのソフトウェア部品をインスタンス化する。
   オブジェクト指向の原理。
     
・コンポーネントには、4つの種類がある。
   アクティビティー
   サービス
   ブロードキャストレシーバ
   コンテンツプロバイダ

・アクティビティー
   UI部品。.NET開発者でいうコントロール。
   作り方は、ほとんど.NETフォームアプリケーションと一緒。WPFの方が近いかな。
   通常は、画面全体で作成。 ただし、画面より小さいウィンドウでも作成可能。
   アクティビティーは、ビューを基底クラスとする。
   ビューの基底クラスは、リーフビューらしい。。。(見る必要あるかな?)
   アクティビティーの種類は、
   ボタン、テキストフィールド、スクロールバー、メニューアイテム、チェックボックス等がある。
   アクティビティーをウィンドウ内に配置するのは、   
   Activity.setContentView()を使う。
   (Activity.setContentView()は、eclipseで自動生成した場合、
   OnCreate()内に書かれます)
  
・サービス
   バックグラウンドで動くスレッド。
   例えば、BGMを再生する事、ネットワークのデータを取得する事などがある。
   実行中のサービスへの接続も可能。
   サービスへの接続(バインド)は、接続されるサービスが提供する
   インタフェースを利用する。
   別スレッドを勝手に作って実行してくれる。
   サービスを開始するには、Context.startService()を呼び出す。
   (後に説明するインテントオブジェクトを渡す)
   詳しくは、こちら

・ブロードキャストレシーバ
   システムからの通知等(ブロードキャスト)を受信するコンポーネント。
   システムからの通知は、電池残量、写真撮影、タイムゾーンの変更などがある。
   その他に、アプリケーションからのブロードキャストも受け取る事ができる。
   ブロードキャストレシーバは、複数設定できる。(色々受信できるように)
   BroadcastReceiver を使う。

・コンテンツプロバイダ

   データ格納領域を利用するコンポーネント。
   例えば、ファイル、SQLite等を利用する。
   通常は、プロバイダにアプリケーションから直接アクセス出来ない。(セキュリティーのため?)
   よって、ContentResolverのめゾッドを呼び出して、利用する。

・Androidの基本動作は、上記4つのコンポーネントが起動中かどうか確認し、
   必要があれば起動し、利用可能か確認した後、コンポーネントを使用する。
  
つまり、4つのコンポーネントを作って、使いやすく、制限しやすくしたから、
これを使って作ってくれよ。ってことかな。


コンポーネントのアクティブ化:インテント
[ここで使われる用語]
・インテント  → 
   非同期メッセージ。(.NETでいうイベントみたいなもの。イベントと読んだほうがわかりやすい。) 
・インテントオブジェクト → 
   インテントによって渡されるメッセージ内容。     
・コンテンツプロバイダ  →
   データ格納オブジェクト。ファイルやDB。

[言っていること]
・それぞれのコンポーネントは、リクエストがあるとインスタンス生成される。
   コンテンツプロバイダは、ContentResolverからリクエストがあるとアクティブ化される。
   アクティビティ、サービス、ブロードキャストレシーバは、インテントによってアクティブ化される。
   つまり、インテントによってコンポーネントを呼び出す。

・アクティビティのインテントオブジェクト
   アクティビティ(UI)から返されるオブジェクト。
   例えば、画像を選ぶUIの場合、インテントオブジェクトは、ユーザが選んだ画像。
   アクティビティがアクティブ化され、インテントオブジェクトを受け渡す手順は、
   1. Context.startActivity()、またはActivity.startActivityForResult()にてインテントオブジェクト
       を渡し、受け取り側をアクティブ化する。
   2. onNewIntent()が呼び出され、受け取り側(後画面)にインテントオブジェクトを渡す。
   3. 受け取り側は、そのインテントオブジェクトを受け取り処理し、呼び出し側に戻す。
   4. 呼び出し側は、onActivityResult()によって、結果のインテントオブジェクトを受けとる。

・サービスのインテントオブジェクト
   サービスに渡すオブジェクト。  
   1. Context.startService()にてインテントオブジェクトを渡し、呼び出すサービスをアクティブ化する。
   2. onStart()が呼び出され、インテントオブジェクトを呼び出しサービスに渡す。
   3. Context.bindService()にてインテントを渡すと、割り込み処理ができる。

・ブロードキャストのインテントオブジェクト
   ブロードキャストに渡すオブジェクト。
   これにより、関係のあるブロードキャストレシーバにインテントオブジェクトが渡される。
   1. Context.sendBroadcast()、Context.sendOrderedBroadcast(),
       Context.sendStickyBroadcast() などにより、インテントオブジェクトをブロードキャストに渡す。
   2. AndoroidシステムのonReceive()によって、関係のあるブロードキャストレシーバに
       インテントオブジェクトが渡される。

・コンテンツプロバイダのインテントオブジェクト
   リクエストの対象になるとアクティブ化される、
   特にインテントオブジェクトという概念は無い。(ファイルだからね)

つまり、全体的な手順としては、
1.何らかのメソッドで、インテントオブジェクト(メッセージ付のイベント)を渡し、受け取り側をアクティブ化する。
2.受け取り側は、何らかのメソッドで、インテントオブジェクトを受け取る。
っていうことかな。


コンポーネントの終了
・アクティビティのコンポーネント終了
   finish() メソッドや、startActivityForResult()メソッド等を呼び出す。

・サービスのコンポーネント終了
   stopSelf()メソッドや、Context.stopService()を呼び出す。

・ブロードキャストのコンポーネント終了
   特に無い。 システムコールのイメージだからあったらだめだよね。

・コンテンツプロバイダのコンポーネント終了
   終了処理をする必要はない。 リクエストに応答している間のみアクティブになるので。

つまり、アクティビティとサービスだけは、終了に気をつけてね!ってことかな。


マニフェストファイル
Androidシステムに、コンポーネントを認識させるファイル。
xmlファイルで、必ず"AndroidManifest.xml"という名前になる。
コンポーネントの指定だけでなく、必要なライブラリや、権限等の指定もする。
(詳細は、サイトを見てください)



インテントフィルタ
上記マニフェストファイルに記載されるフィルタ。
フィルタと言っても、インテントフィルタとして登録すると、起動時にそのコンポーネントがアクティブになるということらしい。
また、アプリケーションへのエントリポイント(ショートカットみたいなもの)も登録できる。



一応、キリがいいので今回はここまでにしておきます。
ここまでで言っていることは、
・Androidには、4つのコンポーネントがあり、それぞれ、イベントによって起動します。
・マニフェストファイルにより、初期設定ができます。

って事くらいかな。
って、長々と書きましたが、まとめると二行で終わりです(- -;)""

アクティビティーとタスクからは、次回に譲ります。

終わり。






テーマ : プログラミング
ジャンル : コンピュータ

プロフィール

名前 :ss_9
紹介 :
20代はエンジニア、30代はプロ、40代は管理、50代は人脈。

Twitterボタン

最新記事
カテゴリ
AD
月別アーカイブ
RSSリンクの表示
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。