2016-10-12 1 views
1

Ich verwende den Vordergrund-Service in meiner Android-Anwendung. Und ich bin überschreibt die Methode des Service onStartCommand wie folgt:Welche Auswirkungen hat die Erhöhung von startId im Android-Vordergrunddienst?

public int onStartCommand(Intent intent, int flags, int startId) { 
// doing my staff here 
} 

Wie documentation sagte:

vom System aufgerufen, jedes Mal, wenn ein Kunde ausdrücklich den Dienst startet durch den Start Aufruf (Intent) mit den von ihm gelieferten Argumenten und einem eindeutigen Ganzzahl-Token, das die Startanforderung darstellt.

Und

startId int: Eine eindeutige Ganzzahl dieses spezielle Anforderung an Anfang darstellt. Verwenden Sie mit stopSelfResult (int).

Ich verwende den Dienst korrekt und der Dienst funktioniert ordnungsgemäß.

Meine Frage ist:

Jedes Mal, wenn ich den Dienst starten, die startId nimmt als Dokumentation gesagt. Worüber ich nicht klar bin, ist, wie sich der Start von startId auswirkt. Wird mehr Speicher benötigt oder wirkt sich dies auf die App-Leistung aus? (z. B. was ist, wenn startId über 1000 zunimmt?)

+0

es wird in 'Service # stopSelfResult (int startId)' verwendet, es ist nur eine ID, nichts mehr – pskink

+0

Starten Sie den gleichen Dienst mehrmals aus Ihrer Anwendung? Wieso würdest du das machen ? Erkläre über deinen Fall, dann kann ich antworten –

+0

@AmirZiarati was ist falsch damit? Wie würden Sie eine neue Anfrage an "IntentService" weitergeben? – pskink

Antwort

0

Dies ist nur ein Token nur eine ID wie die Anfrage-ID in startActivityByResult.

Wenn Sie einen Dienst mehrere Male starten, können Sie durch diesen Token für jeden von ihnen ein Handle haben.

Angenommen, Sie starten den Dienst zweimal und möchten dann den zweiten Anruf beenden! Du wirst etwas brauchen, um diese Sekunde zu bezeichnen, und das ist etwas, was diese ID ist.

Erhöhung dieser ID kann kein Zeichen für Speicherverlust oder irgendetwas sein, nur eine ID. Aber Fälle, in denen Sie einen Dienst mehrmals in einer Anwendung starten müssen, sind selten. Also pass auf, was du tust. Starten Sie nicht mehrere Instanzen eines einzelnen Dienstes, wenn Sie sie nicht wirklich benötigen.

+1

'" Angenommen, Sie starten den Dienst zweimal und wollen dann die zweite Instanz stoppen "' nicht wirklich, ein Dienst kann keine "zweite" Instanz haben, es ist ein signleton – pskink

+0

Ja, Sie sind verdammt wahr krank meine Antwort bearbeiten;) tnx –

Verwandte Themen