Was passiert, wenn ein Service mehrmals gestartet wird?

Wenn ich den folgenden Code habe:

Intent intent = new Intent(this,DownloadService.class); for(int i=0;i<filesArray.length;i++){ startService(intent); } 

In diesem Code verlängert DownloadService IntentService .

  • Übergeben von einer Listenansicht zu einem Gridview
  • Androide illegale Ausnahme, wenn der Dialog angezeigt wird
  • Wie zu deaktivieren / aktivieren Netzwerk, wechseln Sie zu Wifi in Android Emulator?
  • Wie mache ich ein benutzerdefiniertes Raster mit Bildern in Android?
  • Com.android.build.transform.api.TransformException mit android google play services
  • `/ Storage / emulated / legacy /` vs `/ storage / emuliert / 0 /` vs `data / data / myApp '
  • Also jetzt, wenn ich startService(intent) das bedeutet, dass ich einen neuen Service startService(intent) wenn startService(intent) aufgerufen wird oder bedeutet das, dass DownloadService einmal ausgeführt wird und dann jedes Mal, wenn ich startService(intent) Wird nur eine andere Absicht mit einem anderen startId passieren.

    Ist das sinnvoll, und welche davon ist der Fall?

  • Android - Wie positioniere ich den Bildschirm?
  • Unerwarteter CallbackManager, in facebook Integration Android
  • Erstellen Sie eine Benachrichtigung mit BroadcastReceiver
  • Android: EditText verliert Inhalt beim Scrollen in ListView?
  • Wie setze VersionName im APK-Dateinamen mit gradle?
  • Installiere eine App von Google Play on Emulator
  • 3 Solutions collect form web for “Was passiert, wenn ein Service mehrmals gestartet wird?”

    Der Service wird nur in einem Fall ausgeführt. Bei jedem Start des Dienstes wird jedoch die Methode onStartCommand() aufgerufen.

    Dies ist hier dokumentiert

    Absolut korrekt. Für einen Bewerbungsprozess wird nur eine Instanz von Service angelegt. Und wenn du onStart () anrufst; Wieder, dann wird nur onStartCommand () aufgerufen und neue Intent wird an onStartCommand () Methode übergeben.

    Hinweis: onCreate () wird nicht erneut aufgerufen.

    Über calling bindService () mehrmals:

    Wenn Sie bindService () mehrmals anrufen, wird wieder nur eine Instanz für Service verwendet und Android Runtime gibt das gleiche IBinder-Objekt an den Client zurück.

    Mittel, onBind () wird nicht mehrfach genannt. Und gerade gehacktes IBinder-Objekt wird zurückgegeben.

    Hinzufügen von etwas mehr Informationen zu den oben genannten Antworten, die für andere hilfreich sein können, ist, dass startId, die die onStartCommand () – Methode empfängt, für jeden startService () – Aufruf unterschiedlich ist. Auch wenn wir in Loops schreiben, wie oben erwähnt, würde der Code, der in onHandleIntent () geschrieben wurde, so oft ausgeführt werden, wie er von der for-Loop-Frequenz definiert wurde, aber in der Reihenfolge und nicht parallel. Das Konzept ist IntentService erstellt eine Work-Queue und jede Anforderung zum startService () Trigger onStartCommand (), die wiederum die Absicht in der Arbeitswarteschlange speichert und dann die Absicht eins nach dem anderen auf onHandleIntent () übergibt.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.