Android bindService o / y startService

Quiero crear servicio utilizando el método bindService . Pero cuando cierro una Actividad mi Servicio es destruido, y no quiero eso.

Trato de poner el servicio en primer plano con startForeground(NOTIFICATION_ID, notification); Servicio onCreate, pero el servicio sigue destruyendo.

Ahora intento con dos métodos de la llamada para comenzar el servicio al mismo tiempo:

  Intent bindIntent= new Intent(this, ServiceC.class); startService(bindIntent); bindService(bindIntent, onService, BIND_AUTO_CREATE); 

Al llamar a estos dos métodos Servicio no destruido. Mi aplicación funciona bien con este método.

¿Puede alguien explicarme si esto es una buena manera o si no es puede por favor darme idea por qué startForeground(NOTIFICATION_ID, notification); no funciona ?

Cuál es la mejor manera de utilizar bindService pero al mismo tiempo no quiero que el servicio se destruya.

Utilicé la misma solución y es legítima. De servicio ref:

Un servicio puede iniciarse y tener conexiones vinculadas a él. En tal caso, el sistema mantendrá el servicio funcionando siempre que se inicie o haya una o más conexiones con el indicador Context.BIND_AUTO_CREATE. Una vez que ninguna de estas situaciones se mantiene, el método onDestroy () del servicio es llamado y el servicio se termina de manera efectiva.

startForeground() no está funcionando porque sólo intenta evitar que el servicio sea destruido por el sistema, pero su ciclo de vida es otra cosa: si nada está más ligado a ese servicio y no se inició, simplemente se detiene.

Si inicia el servicio con startService () no se destruye. Intentado comenzar un servicio, que extienda IntentService y tenga un lazo en onHandleIntent (). Cuando se termina el bucle, el servicio se destruye y no se relaciona con el fin de la actividad. El usuario puede cerrar la aplicación, pero el servicio no se está matando.

 public class MyService extends IntentService { private static final String serviceName = "MyService "; public MyService () { super(serviceName); } @Override public void onDestroy() { Log.v(serviceName, "onDestroy"); Toast.makeText(this, serviceName+" stopped", Toast.LENGTH_LONG).show(); super.onDestroy(); } @Override protected void onHandleIntent(Intent arg0) { long endTime = System.currentTimeMillis() + 30*1000; while (System.currentTimeMillis() < endTime) { synchronized (this) { try { Log.v(serviceName, "Service loop"); wait(1000); } catch (Exception e) { } } } } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.