Аварийная сигнализация AlarmManager немедленно срабатывает

Я тестирую AlarmManager для использования в своем приложении, и он сразу же AlarmManager мой приемник вещания, когда я хочу, чтобы он срабатывал через 1 минуту. Код ниже:

 public class SetMealTimersActivity extends Activity { PendingIntent pi; BroadcastReceiver br; AlarmManager am; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_set_meal_timers); br = new BroadcastReceiver() { @Override public void onReceive(Context c, Intent i) { Toast.makeText(c, "Ready to Go!", Toast.LENGTH_LONG).show(); } }; registerReceiver(br, new IntentFilter("com.ian.mealtimer")); pi = PendingIntent.getBroadcast(this, 0, new Intent( "com.ian.mealtimer"), 0); am = (AlarmManager) (this.getSystemService(Context.ALARM_SERVICE)); am.set( AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 60 * 1000, pi ); } 

пытаться :

  am.set(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis()+60*1000, pendingIntent); 

Он работает для меня.

Попробуйте изменить SystemClock.elapsedRealtime() на System.currentTimeMillis() и AlarmManager.ELAPSED_REALTIME_WAKEUP на AlarmManager.RTC_WAKEUP .

Попробуйте использовать AlarmManager.setExact(int, long, PendingIntent) если вы используете Android API> 18 или скомпилируете с API <19, потому что управление временем для этих методов изменилось с помощью API 19. Возможно, это помогает. Прочтите документацию для получения дополнительной информации.

Сделать id для pendingIntent

 pendingIntent = PendingIntent.getActivity(this, 999123266, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

Все примеры

 public void setAlarm_sat(int dayOfWeek1) { cal1.set(Calendar.DAY_OF_WEEK, dayOfWeek); Intent intent = new Intent(this, RemmemberActivity.class); pendingIntent = PendingIntent.getActivity(this, 999123266, intent, PendingIntent.FLAG_UPDATE_CURRENT); Long alarmTime = cal1.getTimeInMillis(); AlarmManager am = (AlarmManager) getSystemService(Activity.ALARM_SERVICE); am.setRepeating(AlarmManager.RTC_WAKEUP, alarmTime,7*24 * 60 * 60 * 1000, pendingIntent); // am.set(AlarmManager.RTC, cal1.getTimeInMillis(), pendingIntent); }