2012年4月10日火曜日

ぷ~ろぐ:


AppWidgetについての前記事:Androidアプリ開発メモ034:AppWidget

AppWidgetホスト

AppWidgetを保持できるコンポーネントをAppWidgetホストという。
普通はホームスクリーンだが、AppWidgetHostを使えば普通のアプリもApp Widget hostになれるようだ。

サービスの利用

リファレンスでは、AppWidgetの実装にサービスを利用することも検討するようにと書かれている。
理由は、AppWidgetProviderがブロードキャストレシーバなので、そのプロセスがずっと残るとは限らないから。
#AppWidget更新のブロードキャストインテントが投げられると、AppWidgetのブロードキャストレシーバをシステムが自動的に起動してくれる、とはなってないのか?
ApiDemosのExampleAppwidgetProviderはサービスを使ってないようだが、onUpdate()でサービスを起動する実装が例として挙げられている。

ここから、開発ガイドのサンプルコードに出てくるクラス・メソッドについて。


ここで、 genはなかった。

RemoteViews

AppWidgetは、AppWidgetProviderまたはAppWidgetProviderから起動したサービスとは異なるプロセスで動いている。異なるプロセス上のAppWidgetのビューを扱うにははRemoteViewsを使う。
"RemoteViews"と複数形になっているので、1個のビューではなく、レイアウトを含めたひとまとまりのビューの集合を扱うクラスなんだろう。
リファレンスのClass Overviewには以下のように書いてある。


どのように私は私の運転免許証が中断知っている
 そのクラスは、別のプロセスに表示できるビューの階層(hierarchy)を説明します(describe)。階層は、レイアウトのリソースファイルから膨らませ、そしてこのクラスでは、膨張した階層の内容を変更するためのいくつかの基本的な操作を提供しています。 

レイアウトファイルに定義されている1つの画面のビューの集まりは階層構造しているから。hierarchyとはそのビューの集まりのことか。
 android.widget.RemoteViewsクラス public RemoteViews(String packageName, int layoutId) 指定したレイアウトファイルに含まれるビューを表示する新しいRemoteViewsオブジェクトを生成する。 
 public void setOnClickPendingIntent(int viewId, PendingIntent pendingIntent) クリック時にIntentを発行するように指定する。 提供されたPendingIntentを起動するsetOnClickListener(android.view.View.
差し押さえジェットクラッシュプローブを購入する方法
OnClickListener)を呼び出すことに相当する。コレクション内の項目(例えばListView、StackViewなど)のオンクリックアクションを設定する場合は、このメソッドは動作しない。代わりに、setPendingIntentTemplate(int, PendingIntent)をsetOnClickFillInIntent(int, Intent)とあわせて使用する。

PendingIntent

PendingIntentを使うとタイミングを指定して(イベント発生時など)Intentを発行できる。Intentとターゲットアクション(startActivity()など)を組み合わせたラッパーとみなすことが出来る。
このクラスのインスタンスはgetActivity()、getBroadcast()、getService()で生成する。


 android.app.PendingIntentクラス public static PendingIntent getActivity(Context context, int requestCode, Intent intent, int flags) Context.startActivity()の呼び出しのように、新しいアクティビティを開始するPendingIntentを取得する。アクティビティは、既存のアクティビティのコンテキストの外部で起動されるので、IntentでIntent.FLAG_ACTIVITY_NEW_TASK起動フラグを使用する必要があることに注意する必要がある。 
 public static PendingIntent getBroadcast(Context context, int requestCode, Intent intent, int flags) Context.sendBroadcas()の呼び出しのように、ブロードキャストを実行するPendingIntentを取得する。 
 public static PendingIntent getService(Context context, int requestCode, Intent intent, int flags) Context.startService()の呼び出しのように、サービスを開始するPendingIntentを取得する。 

上記3個のメソッド第2引数requestCodeについて、リファレンスでは "currently not used" と書いてあるが、使用されているらしい。詳しくは参考サイト3を参照。

AppWidgetManager

AppWidgetの更新はAppWidgetManager#updateAppWdiget()を使う。


 android.appwidget.AppWidgetManagerクラス public static AppWidgetManager getInstance(Context context) AppWidgetManagerのインスタンスを取得する。 
 public void updateAppWidget(ComponentName provider, RemoteViews views) 指定されたproviderのAppWidgetすべての画面を更新する。 引数:   provider  AppWidgetのプロバイダのためのComponentName   views  表示するRemoteViews 
 public void updateAppWidget(int[] appWidgetIds, RemoteViews views) appWidgetIdsのAppWidgetの画面を更新する。 

ComponentName

AppWidgetManager#updateAppWidget()の引数に使われているComponentNameは、利用可能な特定のアプリケーションコンポーネント(Activity,Service,BroadcastReceiver,ContentProvider) の識別子である。コンポーネントを識別する情報としてパッケージ名とパッケージ内のクラス名(ともに文字列)がカプセル化されている。

 android.content.ComponentNameクラス public ComponentName(String pkg, String cls) 新しいコンポーネント識別子を生成する。 

参考サイト:
1.Android適当メモ : RemoteViewsの仕組み
2.Y.A.M の 雑記帳: Android AppWidget
3.Y.A.M の 雑記帳: Android AppWidget の PendingIntent で putExtra するときの注意
4.AppWidgetの作成(2) + PendingIntent << Tech Booster



These are our most popular posts:

【調査】 「衆院選は民主党に入れる」59%、「小沢氏辞任、当然」41 ...

2010年1月11日 ... 今回の辞任の原因は、元盟友、小沢だ。 ...... 小沢という人間はなぜここまでして日本を" 自殺"に追い込むようなことしてるのか・・・・ ..... しかも一度与えた権利を取り消すことは 民主主義にはおいて相当不可能にちかいと思います。 .... 国の借金を返済する一番簡単 な方法は、政府がガンガン国債を刷り財政出動を遣り、名目GDPを上げインフラを誘発 させる事で、貨幣価値を下げ実質的に借金を ...... I pilfer pleasure in seeing sites that fulfil the advantage of providing a prime resource for fully free. read more

【FM】Football Manager 質問スレ7

2011年11月29日 ... 辞意の表明だったのが一転、中川財務大臣が即時辞任。後任は与謝野 ... resources style name= parent= item ... Androidアプリ全体で文字色や背景色を統一させる方法(Theme/テーマ) | mucchinのAndroid戦記 ... RemoteViews#setOnClickPendingIntent()でセットした ボタンの動作を取り消すには、PendingIntent#cancel()を使う。 ..... 今の自分は どれくらいダメなのか、7年の時を越えてダメ人間度チェックを再びやってみた。 read more

ぷ~ろぐ:

2009年5月12日 ... 小沢氏は巨額献金事件の政治的な責任ではなく、政権交代に向け、挙党一致のために 辞任すると ..... 2009/05/12(火) 15:23:17 ID:IX3V93M10 [1/1回発言]: この時期に ネットアンケートに必死になって答えるのがどういう人間かなんてちょっと考えりゃ分かる だろ ... で無作為に発生させた番号に電話をかけるRDDという方法で、世論調査を行い まし ...... 一生に一度もマンガもアニメも見た事ないなら発言取り消すけど。 ...... : siteresources.worldbank.org/DATASTATISTICS/Resources/GNIPC.pdf ... read more

藤井財務相の辞任の真相は? - 津川雅彦『遊び』ぶろぐ −サンタの隠れ家−

2012年3月1日 ... 米カーライル、東南アジア部門トップが辞任 2:58午後. WRAPUP1: 2月の ... 香港航空 、A380型機の発注取り消す可能性 EUの炭素税めぐり=地元紙 12:51午後 ... 米国で 「人間マットレスドミノ」の新記録、850人が次々に倒れ 12:16午後 ... read more

0 件のコメント:

コメントを投稿