Verwenden Sie 0 oder BIND_AUTO_CREATE für bindService Flagge
Durch die Bezugnahme auf bindService (Intent-service, ServiceConnection conn, int flags)
Kann ich wissen, Wann sollten wir verwenden 0 für flags
, und Wann sollten wir sollten wir BIND_AUTO_CREATE
für flags
? Die Dokumentation erklärt nicht, was ist der Sinn von " 0 " für Flaggen.
Beispiel für die Verwendung von 0 als flags
//Start auto complete service.
autoCompleteServiceIntent = new Intent(AutoCompleteService.class.getName());
startService(autoCompleteServiceIntent);
bindService(autoCompleteServiceIntent, serviceConnection, 0);
Beispiel für die Verwendung BIND_AUTO_CREATE
als flags
mContext.bindService(new Intent("com.android.vending.billing.InAppBillingService.BIND"),
mServiceConn, Context.BIND_AUTO_CREATE);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Methode für
bindService(Intent, ServiceConnection, flag)
wennflag= Context.BIND_AUTO_CREATE
verwendet wird, binden Sie dieservice
und starten Sie den Dienst,aber wenn
"0"
verwendet wird, wird die Methode true zurück und wird nicht starten Sie den Dienst erst nach einem Anruf, wiestartService(Intent)
zum starten derservice
.Eines der gemeinsamen Nutzung von
"0"
ist in dem Fall, wo eine Aktivität, um eine Verbindung zu einem lokalen Dienst, wenn der Dienst ausgeführt wird, andernfalls können Sie den Dienst starten.Semantisch, verwenden Sie
BIND_AUTO_CREATE
wenn Sie die Bindung an einen Dienst, dessen Leben ist nur so lange gültig, wie es Kunden gebunden. Das ist, weil die minute, die alle clients aufgehoben, es wird nach unten gehen.Nicht verwenden
BIND_AUTO_CREATE
- oder vielleicht sollte ich anders formulieren: es gibt keinen Punkt in mitBIND_AUTO_CREATE
, wenn Sie wirklich nur vorübergehend Bindung an einen service, um abzufragen oder zu kontrollieren, und es ist sinnvoll, dass dieser Dienst würde weiterleben, nachdem Sie fertig sind. Für diese Fälle verbindlich ist für den Aufbau einer Verbindung, und der service " Life Cycle verwaltet werden sollen mitstartService()
undstopService()
(oderstopSelf()
in einigen Fällen).Eine Häufig genannte Beispiel für letzteres ist eindeutig beschrieben durch Google in der Dokumentation auf gebundene services:
Insgesamt würde ich sagen, dass die Verwendung der fahne wirklich unterscheidet zwei sehr unterschiedliche Arten von Nutzungen, die eher als fein abgestimmte Versionen der gleichen Sache.
Antwort von Sourab Sharma ist falsch, da:
1.Als saxman, kommentiert
BIND_AUTO_CREATE
wird nur der service, wenn es nicht bereits läuft. Sollten Sie call startService (), um einen Dienst zu starten.2.
bindService()
gibt true zurück, wenn der service wurde erfolgreich an die Komponente gebunden, andernfalls false.