2016-09-15 10 views
0

Intentを変更することは可能ですか?AlarmManagerがトリガーされるたびに追加料金がかかりますか?AlarmManagerのIntentを起動するたびに変更できますか?

+1

http://stackoverflow.com/questions/14106299/change-the-intent-of-intendent-which-is-used-by-an-alarmmanagerこれを確認してください –

+0

FLAG_UPDATE_CURRENTはまだ動作しませんでした。 私の目標は、エクストラを変更するだけで、アクションは必要ありません。 – atanti

+0

私はいつもAlarmManagerメソッドを呼び出すはずですか? – atanti

答えて

0
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
Intent i = new Intent(context, Alarm.class); 
// Extras aren't used to find the PendingIntent 
PendingIntent pi = PendingIntent.getBroadcast(context, tag, i, 
     PendingIntent.FLAG_NO_CREATE); // find the old PendingIntent 
if (pi != null) { 
    // Now cancel the alarm that matches the old PendingIntent 
    am.cancel(pi); 
} 
// Now create and schedule a new Alarm 
i = new Intent(context, NewAlarm.class); // New component for alarm 
i.putExtra("position", tag); // Whatever new extras 
pi = PendingIntent.getBroadcast(context, tag, i, PendingIntent.FLAG_CANCEL_CURRENT); 
// Reschedule the alarm 
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+ time, pi); // Millisec * Second * Minute 

はい毎回あなたが任意のデータのエキストラのような意図の変化、アクション、コンポーネント何かを作りたい場合は、現在の1をキャンセルして新しいものを起動する必要があります。

+0

これは起動後に新しいインテントを実行しますか、またはメソッドを再度呼び出す必要がありますか? – atanti

+0

アラームが発生するとすぐにメソッドを呼び出すにはどうすればよいですか? – atanti

+0

前のものをキャンセルする必要があるときは、新しいメソッドを作成するためにメソッドを再度呼び出す必要があります。あなたがコードのその部分でアラームを発しているときは、関数を呼び出す。この希望を試してみてください –

関連する問題