Ich habe einen Dienst, der jedes Mal gestartet wird, wenn ich meine Anwendung starte oder das Gerät neu startet, aber ich habe kürzlich festgestellt, dass der Dienst mehrmals gleichzeitig ausgeführt werden kann genannt, stapelt es sich einfach auf und schließlich wird der Batterieverbrauch wahnsinnig.Überprüfen, ob der gestartete Dienst bereits läuft
Kann jemand überprüfen, ob ein Dienst bereits läuft? Hier
ist der Code für das Starten des Service:
intent = new Intent(Application.Context, typeof(NotificationService));
Application.Context.StartService(intent);
Sein in der MainActivity Klasse in der OnCreate Funktion aufgerufen, nachdem alle anderen Code innerhalb der Funktion erfolgt.
Die Serviceklasse ist wie folgt:
[Service (Label = "ITMNotificationService")]
class NotificationService : Service
{
...
public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
{
base.OnStartCommand(intent, flags, startId);
...
UpdateNotification();
return StartCommandResult.Sticky;
}
public override IBinder OnBind(Intent intent)
{
// This is a started service, not a bound service, so we just return null.
return null;
}
}
Innerhalb eine Aufgabe, die ich jede X Zeit hätte ausgeführt wird:
private void UpdateNotification()
{
Task.Delay(updateTimer).ContinueWith(t =>
{
...
UpdateNotification();
}, TaskScheduler.FromCurrentSynchronizationContext());
}
ich nur eine Instanz des Dienstes haben will, gibt es seit Es gibt keinen Grund, mehrere zu haben und es ist nur die Batterie.
Alles, was ich denke, ist relevant für den Service, den ich hier hinzugefügt habe, wenn etwas fehlt, bitte informieren Sie mich.
Ich habe eine Aufgabe in meinem Dienst der Suche war, die einen Aufruf einer Funktion (en) alle X Sekunden macht, könnte es die Aufgabe sein, die gestapelt wird? Ich erhalte zum Beispiel 5 oder mehr Male (abhängig von der gestarteten Zeit und Zeiten) Updates einer Statistik statt einmal pro Sekunde. – Nevaran
Ihr Code in onStartCommand muss behandelt werden, wenn sie aufgerufen wird, wenn Ihre Aufgabe bereits ausgeführt wird. – elmorabea
Irgendeine Idee, wie man das macht? Ich bin sehr neu in Android-Entwicklung - weniger als einen Monat. – Nevaran