私のアプリには 2 つの異なるアクティビティがあり、それらに A と B という名前を付けます。5 分後にアラームをトリガーする時間をアクティビティ A に設定します。アクティビティ B に移動し、そこで 1 分もかからない作業を行います。アクティビティ A に戻ります。ここで起きていることは、アラームが再度登録され、前回の 5 分の代わりに、今から 5 分かかるということです...わかりやすくするために、アクト A - アラームの登録 - トリガーするのに 5 分かかりますビープ音...アクティビティ B、アクト B に移動 - 何かを行います - x 分...アクト A に戻ります - アラームが再度登録されます - ビープをトリガーするまで x+5 分....
上記のシナリオが発生したくありません。x+5 ではなく、5 分だけでアラームをトリガーしたいですか? 何か助けてください。それは本当に私を悩ませています..木曜日からそれをしています...
アクトAで
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent checkIntent = new Intent(getApplicationContext(),Alarm_class.class);
checkIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, checkIntent, 0);
if(PendingIntent.getBroadcast(getBaseContext(), 0, checkIntent, PendingIntent.FLAG_NO_CREATE) != null)
{
Log.d("kunal", "Alarm is running");
if(log_days_came.equals("Three"))
{
Log.d("kunal","3 days selected to zip log file.");
// am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 180000, pi);
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 2*60000, pi);
Log.d("kunal","after the pending intent 3.");
}
}
else
{
if(log_days_came == null)
{
Toast.makeText(getApplicationContext(), "configure the days to zip log files", Toast.LENGTH_LONG).show();
Log.d("kunal", "Alarm is not running");
}
}
if(log_days_came.equals("Three"))
{
Calendar calendar2 = Calendar.getInstance();
calendar2.setTimeInMillis(System.currentTimeMillis());
calendar2.add(Calendar.MINUTE, 3);
}
私は行為 B に行きます...いくつかのことを行います...行為 A に戻ります...トリガーが期限切れになることなく、アラームの OnReceive を再度呼び出します...何が間違っていますか?