Utilice 0 o BIND_AUTO_CREATE para el indicador de bindService

Haciendo referencia a bindService (servicio Intent, ServiceConnection conn, int flags)

¿Puedo saber, cuándo debemos usar 0 para flags , y cuándo deberíamos usar BIND_AUTO_CREATE para flags ? La documentación no explica cuál es el significado de 0 para banderas.

Ejemplo de uso de 0 como flags

 // Start auto complete service. autoCompleteServiceIntent = new Intent(AutoCompleteService.class.getName()); startService(autoCompleteServiceIntent); bindService(autoCompleteServiceIntent, serviceConnection, 0); 

Ejemplo para utilizar BIND_AUTO_CREATE como flags

 mContext.bindService(new Intent("com.android.vending.billing.InAppBillingService.BIND"), mServiceConn, Context.BIND_AUTO_CREATE); 

Para el método bindService(Intent, ServiceConnection, flag) si se usa flag= Context.BIND_AUTO_CREATE se enlaza el service e inicia el servicio, pero si se usa "0" , el método devolverá true y no iniciará el servicio hasta que una llamada como startService(Intent) se hace para iniciar el service . Uno de los usos comunes de "0" es en el caso de que una actividad se conecte a un servicio local si ese servicio está en ejecución, de lo contrario puede iniciar el servicio.

Semánticamente, utilice BIND_AUTO_CREATE si está vinculado a un servicio cuya vida útil sólo es válida mientras haya clientes vinculados a él. Eso es porque el minuto todos los clientes tienen unbound de él, bajará.

No utilice BIND_AUTO_CREATE – o tal vez debo reformular: no hay ningún punto en el uso de BIND_AUTO_CREATE , si realmente estás vinculado temporalmente a un servicio para consultarlo o controlarlo, y es razonable que este servicio se BIND_AUTO_CREATE después de que ' Re hecho Para esos casos, la vinculación es para establecer una conexión y el ciclo de vida del servicio debe administrarse utilizando startService() y stopService() (o stopSelf() en algunos casos).

Un ejemplo comúnmente mencionado de este último caso está claramente descrito por Google en los documentos sobre servicios enlazados :

"… Por ejemplo, un reproductor de música puede ser útil para permitir que su servicio se ejecute indefinidamente y también para proporcionar un enlace.Por ejemplo, una actividad puede iniciar el servicio para reproducir música y la música continúa jugando incluso si el usuario deja Luego, cuando el usuario vuelve a la aplicación, la actividad puede enlazar al servicio para recuperar el control de la reproducción. "

En general, yo diría que el uso de la bandera realmente distingue dos tipos muy diferentes de casos de uso, en lugar de versiones afinadas de la misma cosa.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.