In meiner App verwende ich Alarmmanager. Ich gründe Alarme für eine bestimmte times.I mehrere Alarme für bestimmte zukünftige Zeit setze wie in unten erwähnt werden:Warum Alarm Manager feuert ausstehende Androide?
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e("test", "on create is called");
SharedPreferences preferences = getSharedPreferences("testing", MODE_PRIVATE);
if (!preferences.getBoolean("alarm", false)) {
Log.d("test", "generating alrams");
setAlarm(getFirstAlarmTime(), 1, "one");
setAlarm(getSecondAlarmTime(), 2, "two");
setAlarm(getThirdAlarmTime(), 3 ," three");
setAlarm(getFourthAlarmTime(), 4, "four");
setAlarm(getFifthAlarmTime(), 5, "five");
preferences.edit().putBoolean("alarm", true).apply();
}
}
private long getFirstAlarmTime() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 13);
calendar.set(Calendar.MINUTE, 7);
calendar.set(Calendar.SECOND,0);
return calendar.getTimeInMillis();
}
private long getSecondAlarmTime() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 13);
calendar.set(Calendar.MINUTE, 8);
calendar.set(Calendar.SECOND,0);
return calendar.getTimeInMillis();
}
private long getThirdAlarmTime() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 13);
calendar.set(Calendar.MINUTE, 9);
calendar.set(Calendar.SECOND,0);
return calendar.getTimeInMillis();
}
private long getFourthAlarmTime() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 13);
calendar.set(Calendar.MINUTE, 10);
calendar.set(Calendar.SECOND,0);
return calendar.getTimeInMillis();
}
private long getFifthAlarmTime() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 13);
calendar.set(Calendar.MINUTE, 11);
calendar.set(Calendar.SECOND,0);
return calendar.getTimeInMillis();
}
private void setAlarm(long alarmTime, int id, String type){
Intent intent = new Intent(this, NotifyService.class);
intent.putExtra("id", id);
intent.putExtra("type", type);
PendingIntent alarmIntent = PendingIntent.getService(getApplicationContext(), id, intent, 0);
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
manager.set(AlarmManager.RTC_WAKEUP, alarmTime, alarmIntent);
}
}
und unten ist der Service NotifyService ich in meiner Absicht nenne
Jeder Alarm wird zu einer bestimmten Zeit ausgelöst, wie in setAlarm() -Methode erwähnt, aber das Problem ist, wenn ich meine App kille und meine App neu starte, startet der Alarmmanager wieder ausstehende Absicht. Warum fehlt mir so etwas? Ich habe viel Zeit und Google verbracht, konnte aber keine Lösung finden. Irgendeine Hilfe?
Eine Sache, die ich festgestellt habe, dass, wenn Handy-Zeit ist sagen wir 12 Uhr und Alarm ist für 11 Uhr eingestellt und App ist gestartet Alarm wiederholt zu wiederholen. :(
AlarmManager funktioniert unabhängig von Ihrer App und feuert Intents auch dann ab, wenn die App beendet wird. Was versuchst du genau zu erreichen? – SpaceBison
Der Alarm sollte nur ausgelöst werden, wenn eine bestimmte Zeit wie beim Einstellen des Alarms auftritt. Nicht danach. In der aktuellen Situation, wenn ich meine App neu starte und App-Zeit ist Weg, nachdem die tatsächliche Alarmzeit eingestellt ist, aber es beginnt, ausstehende Absicht zu feuern. Warum ist das so? –