2

AlarmManagerウィジェットの更新トランザクションに使用しています。5、10、15、30 分など、さまざまな間隔値があります。

呼び方AlarmManager

alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, MyService.class);
pi = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);        

// Interval value, default 600 (600*1000 -> 10 min)
Long repeat = Long.parseLong(prefs.getString("update_preference", "600"));

// Set the manager
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis(), 1000*repeat, pi);

したがって、ユーザーが 5 分または 10 分を選択しても問題ありません。しかし、そうでない場合、つまり、ユーザーは 15、30、60 分などのより大きな値を選択すると、MyServiceすぐに機能しなくなりsetRepetaingます。

違いや間違いは何ですか?

編集: 30 分未満ですぐに動作しますが、一意のリクエスト コードを使用して 30 分以上動作するようになりました。

4

2 に答える 2

2
pi = PendingIntent.getService(context, 12345, i, PendingIntent.FLAG_UPDATE_CURRENT);   

これは機能する可能性があります。「0」は一意の ID として最適な選択ではありません。

于 2012-05-15T09:36:12.137 に答える
2

PendingIntent で一意のリクエスト コードを使用する必要があると思います

保留中の意図の複数のインスタンス

于 2012-05-15T09:30:56.757 に答える