0
Intent in2 = new Intent(context, ReminderService.class);
PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, in2, 0);
AlarmManager alarmManager2 = (AlarmManager)context.getSystemService(context.ALARM_SERVICE);
alarmManager2.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (5 * 1000), 0, pendingIntent2);

そして、reminderservice.java には次のコードが含まれます

public void onStart(Intent intent, int startId) {
    super.onStart(intent, startId);
    Context context = getApplicationContext();
    Intent in = new Intent(this, RemindBroadcastReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, in, 0);
    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (5 * 1000), 1000, pendingIntent);
}
4

2 に答える 2

1

まず、RemindBroadcastReceiverのみを使用することをお勧めします。ReminderServiceは必要ありません

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (5 * 1000), 1000, pendingIntent);

ここでは、1 秒ごとにトリガーされる繰り返しアラームを設定しました。alarmManager.setRepeating の代わりに alarmManager.setを使用する必要があります。

次のコードが役立つと思います。

 /------------------- CALLING PART
        Intent in2 = new Intent("MY_ALARM_ACTION");
        PendingIntent pendingIntent2 = PendingIntent.getBroadcast(this, 0, in2, 0);
        AlarmManager alarmManager2 = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
        //alarmManager2.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (5 * 1000), pendingIntent2);
       alarmManager2.setRepeating(AlarmManager.RTC_WAKEUP,
            System.currentTimeMillis() + (5 * 1000), AlarmManager.INTERVAL_DAY, pendingIntent2);
}
/-------------------



/-------------------------- RemindBroadcastReceiver ----------------
    public class RemindBroadcastReceiver extends BroadcastReceiver
    {
        @Override
        public void onReceive(Context context, Intent intent)
        {
            if (intent.getAction() == "MY_ALARM_ACTION")
            {
                // TODO Enter your code here
            }
        }
    }
于 2013-10-26T19:51:04.113 に答える
0

このコードで何をしたいのかを説明していないので、実際にはわかりませんが、とにかくいくつかのエラーが表示されます。

  • ReminderServiceは のサブクラスであると想定しているため、ではなくServiceを使用する必要があります。PendingIntent.getServicePendingIntent.getBroadcast
  • 最初のコードsetRepeatigでは、パラメーターintervalMillis= 0 を使用して呼び出しAlarmManager.cancel、 を呼び出すことはありません。これは、Android がアラームを永遠にトリガーしないため、エラーだと思います。
  • 別のアラームを設定して、その内部で別の何かをトリガーできるようにするためだけに、なぜサービスを開始するのですか?

コードの目的を説明してください。

于 2013-10-26T19:48:54.560 に答える