Mein Alarm wird beendet, wenn das Betriebssystem die App beendet. Ich dachte, das wäre einer der Punkte eines Alarms, dass es weiterlaufen würde, obwohl OS die App getötet hat? Ich überprüfe die Lebensdauer des Alarms mit dem Befehl "./adb shell dumpsys alarm", und jedes Mal, wenn das Betriebssystem meine App tötet, ist auch der Alarm verschwunden. Wie ich meinen Alarm starten:Der Alarm wird beendet, wenn das Betriebssystem die App beendet
public static void startLocationAlarm(Context context){
if(ActivityLifecycleHandler.isApplicationInForeground()) {
return; // If App is in foreground do not start alarm!
}
String alarm = Context.ALARM_SERVICE;
AlarmManager am = (AlarmManager) context.getSystemService(alarm);
Intent intent = new Intent(locationBroadcastAction);
PendingIntent pi = PendingIntent.getBroadcast(context.getApplicationContext(), 0, intent, 0);
int type = AlarmManager.ELAPSED_REALTIME_WAKEUP;
long interval = ONE_MINUTE;
long triggerTime = SystemClock.elapsedRealtime() + interval;
am.setRepeating(type, triggerTime, ONE_MINUTE, pi);
}
etwas mehr Kontext hinzuzufügen, ich versuche, in einem Dienst eine Stelle Betrieb tun (nicht IntentService) im Hintergrund. Hier ist mein Empfänger. Benutzte Wakeful, weil ich nicht wollte, dass der Dienst getötet wurde, bevor es fertig war.
public class LocationBroadcastReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent myIntent = new Intent(context, LocationServiceAlarmOwnGoogleClient.class);
//context.startW(myIntent);
LocationBroadcastReceiver.startWakefulService(context, myIntent);
}
}
Für einige weitere Informationen: kündige ich den Alarm in OnStart Methode von mehreren Aktivitäten, die der Benutzer zurückkehren kann es im Hintergrund, nachdem sie. Ich weiß nicht, ob das dieses seltsame Verhalten verursachen kann? Hier ist meine Abbrechen Methode:
public static void stopLocationAlarm(Context context){
Intent intent = new Intent(locationBroadcastAction);
PendingIntent sender = PendingIntent.getBroadcast(context.getApplicationContext(), 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(context.ALARM_SERVICE);
alarmManager.cancel(sender);
}
Das ist das Standardverhalten – Shaishav
"jedes Mal, wenn OS meine App tötet, ist der Alarm auch weg" - bitte erklären Sie im Detail, was Sie mit "OS kills my app" meinen. – CommonsWare
@Shaishav Aaah, okey. Ich dachte, Alarme sollten weiterleben, obwohl die App von OS getötet wurde. Wie kann ich dafür sorgen, dass es weiterlebt, obwohl das Betriebssystem es tötet? – Slagathor