Meine Anwendung eine wiederholte Anforderung jede Sekunde - fragt den Server nach neuen Daten, und wenn es solche gibt - es wacht das Gerät auf und führt die Hauptanwendung aus. (dies ist auf Anfrage von den Benutzern, und sie kümmert sich nicht um die Batterie-Nutzung, es ist obligatorisch, jede Sekunde zu laufen. Es ist sehr kritische Operation) (alle Änderungen an den Einstellungen, die helfen könnten, wird vom Benutzer erlaubt)Der Dienst weckt das Gerät nicht auf, wie es sollte
ich curently versuche, dies zu erreichen, indem entweder AlarmManager
oder System.Threading.Timer
(mit beiden versucht), aber jedes Mal, wenn ich mit der Folge Ausgabe am enden:
- Das Gerät Halten Sie den Server an einigen anfordernden Zeigen Sie, während es geschlafen wird, und stellen Sie es in einer scheinbar zufälligen Zeit wieder her. Warum das passiert und wie Sie dieses Problem beheben können
(OS: Android 5.x)
Der Code aus der Änderung des Dienstes in Java (mit Alarmmanager)
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, ConfigReader.serviceRepeatInterval);
Intent intent = new Intent(this, SaleService.class);
PendingIntent pintent = PendingIntent.getService(this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), ConfigReader.serviceRepeatInterval, pintent);
Der Code aus der Änderung des Dienstes ist C# (Xamarin) mit Timer.
public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
{
if(_powerManager == null)
{
_powerManager = (PowerManager)this.GetSystemService(PowerService);
_wakeLock = _powerManager.NewWakeLock(WakeLockFlags.Full | WakeLockFlags.AcquireCausesWakeup | WakeLockFlags.OnAfterRelease, mySaleServiceWakeLock);
vibrator = (Vibrator)this.GetSystemService(Context.VibratorService);
}
timer = new System.Threading.Timer(getCurrentPendingObjects, null, timerRepeatInterval, Timeout.Infinite);
return StartCommandResult.Sticky;
}
posten Sie Ihren Code, wo Sie bitte den Alarm einstellen – earthw0rmjim