0

alarmmanager を使用して設定されるインテントを作成しようとしています。現在、これを 1 つのインテントで実行し、余分なデータを追加することができます (文字列ですが、区切り記号を使用して 1 つの文字列として送信します)。すべてが正常に機能し、正しい時間にオフになります。ただし、このように複数のインテントを送信しようとすると、それらは上書きされ、正しいタイミングで送信されるのは 1 つだけです。アラームマネージャーとは異なるようにインテントを構造化するにはどうすればよいですか (filterIntent() の実行時にインテントが削除されると思います)。

長い話短い- putExtra() はすべてのインテントを同じように見せます...それらが削除されないようにそれらを異なるようにするにはどうすればよいですか(特定のものを削除したい場合に備えてそれらを追跡します)

4

2 に答える 2

0

ドキュメントによると、を使用して2 つの s が等しいAlarmManagerかどうかを確認します。のドキュメントをチェックして、 2 つの s が等しいかどうかを判断する方法を確認してください。また、chris324のソリューションはかなり良いものです。IntentfilterEquals()filterEquals()Intent

于 2010-08-07T12:12:38.453 に答える
0

これが、ウィジェットの更新をスケジュールする方法です。一意のウィジェット ID 番号を持っているため、それぞれを一意にすることができます。

Intent widgetUpdate = new Intent();
widgetUpdate.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
widgetUpdate.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] { appWidgetId });
widgetUpdate.putExtra(EXTRA_POSITION,0);
widgetUpdate.putExtra(EXTRA_URL, URL);
// make this pending intent unique by adding a scheme to it
widgetUpdate.setData(Uri.withAppendedPath(Uri.parse(URI_SCHEME + "://widget/id/"), String.valueOf(appWidgetId)));
PendingIntent newPending = PendingIntent.getBroadcast(context, 0, widgetUpdate, PendingIntent.FLAG_UPDATE_CURRENT);
// schedule the updating
AlarmManager alarms = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarms.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), updateRateSeconds * 1000, newPending);
于 2010-08-07T03:14:27.377 に答える