Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Por qué no comienza este servicio simple?

Tengo un servicio con un manejador que tiene que escribir "Hello" en el logcat cada 5 segundos. Pero no escribe nada en el logcat … Es como si el servicio no estuviera ejecutando, y pongo un punto de interrupción en él y el modo de depuración nunca se detiene en el punto de interrupción.

Comienzo el servicio, en la primera actividad de mi aplicación, con esto:

startService(new Intent(GPSLoc.this, MyServiceNotifications.class)); //enciendo el service 

Estoy seguro de que el código startService se ejecuta porque se llama antes de iniciar otra actividad, y la otra actividad se inicia.

Este es el código de mi servicio:

 public class MyServiceNotifications extends Service { boolean serviceStopped; private Handler mHandler; private Runnable updateRunnable = new Runnable() { @Override public void run() { if (serviceStopped == false) { createNotificationIcon(); } queueRunnable(); } }; private void queueRunnable() { // 600000 : cada 10 minutos, comprueba si hay nuevas notificaciones y actualiza la // notification BAR mHandler.postDelayed(updateRunnable, 5000); } @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { serviceStopped = false; // //////////////////////////////////////MANEJADOR SIMILAR A UN HILO mHandler = new Handler(); queueRunnable(); // ///////////////////////////////////// FIN MANEJADOR } @Override public void onDestroy() { serviceStopped = true; } @Override public void onStart(Intent intent, int startid) { } public void createNotificationIcon() { Log.d("MyServiceNotifications", "Hello"); } } 

5 Solutions collect form web for “¿Por qué no comienza este servicio simple?”

¿Declaró el servicio en AndroidManifest.xml ?

Muy importante: escribir el espacio de nombre correctamente, por ejemplo:

 <service android:name="com.example.data.synchronization.SynchronizationService"/> 

En mi AndroidManifest.xml anteriormente era (incorrecto):

 <service android:name="com.example.data.SynchronizationService"/> 

¡Ningún servicio iniciado y ningún mensaje de error !

Hola el código u escribir funciona bien. Puede ser u olvidar el siguiente código en el archivo de manifiesto antes de cerrar la etiqueta de la aplicación.

 <application> .... <service android:name=".MyServiceNotifications"/> </application> 

También hay circunstancias en las que es necesario poner el atributo "enabled" en "true" al definirlo en el manifiesto, así:

 <service android:enabled="true" android:name=".MyServiceNotifications" /> 

Vea este enlace para más información: http://developer.android.com/guide/topics/manifest/service-element.html

Si está usando Xamarin Droid la manera más fácil de hacer esto es marcar la clase como un servicio como esto:

 [Service] public class LongRunningTaskService : Service { ... } 

Entonces no hay necesidad de ponerlo en el AndroidManifest.xml.

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