2011年6月8日水曜日

widget入門

Androidアプリの醍醐味の一つ、Widgetについて書きます。

チュートリアル的な紹介は他で多くやられていますので、
ここではメカニズムや考え方を中心に書いていきます。

その辺をここの売りに出来ればと(笑)


まず、ユーザーから見るとウィジェットは「ホーム画面に張り付いている
小さなアクティビティ」という事になると思います。

しかし内部的にはマニフェストに宣言されたウィジェットごとにイベントを処理
するためのハンドラをロードする形式をとっています。

これは恐らく、ホーム画面の安定化とメモリ利用の効率化からきている
仕様だと思われます。。。


この仕様であるため、画面に貼りつけられた同じアプリから貼りつけたウィジェット
は同じハンドラを共有することになります。そのため、貼りつけ単位でふられた
一意なIDを元に個別の処理を行っていくという流れになります。

ただ、基本的にウィジェットが拾えるイベントは

・貼りつけられた時
・削除された時
・ホーム画面の準備が整ったとき(起動時)
・(移動は確かめてないです)

であるため、この時にウィジェットの描画とviewに対する操作がされた時の処理
(PendingIntent)やバックグラウンドサービスの起動などを行う必要があります。


以上を踏まえると、詳細設計モデルとしては以下の様な考え方が基本となるでしょう

・貼りつけ単位で何をしたいのか明確にする(ID毎の実装
・共通でしたい事を明確にする(ウィジェットのインスタンス・スタティックメンバ
・常に動かしていたい機能を明確にする(Serviceとの連携
・ホーム画面から使いたい機能を明確にする(PendingIntentから起動するアクティビティ


取りあえず、ちゃちゃと概要だけ。
また時間があったら端末の状態で処理を考える必要性について書いてみたいです。


では、めちゃ眠いのでお休みです☆★☆

0 件のコメント:

コメントを投稿