のwidget
数を設定する がありpendingIntents
ます。ホーム画面にウィジェットが1つしかない限り、ウィジェットはすべて正常に機能しています。
とりあえず、ユーザーをホーム画面のウィジェットの 1 つだけに制限することにしました。1 つが既に使用されている場合はConfigureActivity
、2 つ目を追加できないことを知らせる alertDialog ボックスがユーザーに表示され、設定setResult(RESULT_CANCELED, null)
してから finish() に進みます。
これは問題なく機能し、ユーザーはそれ以上ホーム画面のウィジェットをセットアップできなくなりますが、既に配置されているウィジェットのほとんどは起動しpendingIntents
ません。Logcat は、「保留中のインテントを送信できません:」と言っています。
各 pendingIntents は、ウィジェットの更新に使用されるサービスを開始するように設定されています。ウィジェットを削除してリセットすると、2 つ目のウィジェットを追加しようとするまで、正常に動作します。この時点で、私には少し困惑しています。2 番目のウィジェットの追加を開始したが、それを完了しないと以前の pendingIntents が取り消される理由について、誰にもアイデアがありますか?
重要な場合は、でセットアップする pendingIntents FLAG_CANCEL_CURRENT
.
intent
myとを設定するために使用されるコードは次のとおりですpendingIntents
。
Intent intentDialog = new Intent(getBaseContext(), ScheduleActionsActivity.class);
intentDialog.putExtra("Action", ACTION_ENTER_SCHEDULE);
intentDialog.setAction("abc.hwRowOne");
intentDialog.putExtra("scheduleId", sch.getId());
intentDialog.putExtra("scheduleDescription", sch.getDescription());
PendingIntent pendingIntentDialog1 = PendingIntent.getActivity(getBaseContext(), 0, intentDialog, PendingIntent.FLAG_CANCEL_CURRENT);
views.setOnClickPendingIntent(R.id.hwRowOne, pendingIntentDialog1);
ウィジェットの行ごとにintentDialog.setAction()
変更される行が一意になるため、 pendingIntent も一意になると思いました。
質問を投稿した後、昨夜この回答を見ましたが、なぜ/どのように機能するのかわかりません。自分の地域のどこに置くべきかわかりません。インテントごとに一意のデータを設定しているように見えますが、それが私.setAction()
がやっていると思っていたことです。最後のウィジェットのみを更新するウィジェットの複数のインスタンス
あなたの質問に答えるために、いいえ、私のインテントで appWidgetId をまったく使用していませputExtra()
んintentDialog
。