PendinIntentsはウィジェットに非常によく使用されます。実行中のウィジェットのレイアウトはコードに属していませんが、代わりにシステムの制御下にあるため、インターフェースエレメントに直接クリックリスナーを割り当てることはできません。代わりにあなたは、ユーザーがそれらに触れたときに、PendingIntentが「実行」される(ボタンなど)、それらの要素に何かPendingIntentを割り当てます。この場合、
// get the widget layout
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.id.widget_layout);
// prepare to listen the clicks on the refresh button
Intent active = new Intent(context, WidgetCode.UpdateService.class);
PendingIntent refreshPendingIntent = PendingIntent.getService(context, 0, active, 0);
remoteViews.setOnClickPendingIntent(R.id.buttonWidgetRefresh, refreshPendingIntent);
// send the changes to the widget
AppWidgetManager.getInstance(context).updateAppWidget(appwidgetid, remoteViews);
をウィジェット内のボタンは、サービスを開始します。通常は、putExtras()を使用してインテントに余分な情報を入れます。そのため、サービスは必要な情報を取得してその仕事を行います。
「PendingIntent」でサービスを開始したいときがありますか? –
近いうちにサービスを開始したい場合は、これが理想的なケースです。ユーザーのアカウントで利用可能な新しいアップデートを表示する通知があるとします。理想的には、サーバーへの接続を確立し、この情報をダウンロードする予定の保留中の意図があります。ユーザーが通知をすぐにタップしたとき、つまりユーザーの便宜を待っているときや、ユーザーが気にしない場合は通知をキャンセルして次の新しい更新が同じ方法で反応するようにしたいときに、この処理を実行します。 – JoxTraex
すばらしい説明、ありがとう! – damluar