stopservice - java android service
¿Por qué este servicio simple no está comenzando? (5)
También hay circunstancias en las que debe poner el atributo "habilitado" en "verdadero" al definirlo en el manifiesto, de esta manera:
<service android:enabled="true" android:name=".MyServiceNotifications" />
Consulte este enlace para obtener más información: http://developer.android.com/guide/topics/manifest/service-element.html
Tengo un servicio con un controlador que tiene que escribir "Hola" en el logcat cada 5 segundos. Pero no escribe nada en el logcat ... Es como si el servicio no se estuviera ejecutando, y puse un punto de interrupción 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 se ejecuta el código startService
porque se llama antes de comenzar otra actividad y comienza la otra actividad.
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");
}
}
¿Declaraste el servicio en AndroidManifest.xml
?
Muy importante: escriba el espacio de nombre correctamente, por ejemplo:
<service android:name="com.example.data.synchronization.SynchronizationService"/>
en mi AndroidManifest.xml
anteriormente estaba (mal):
<service android:name="com.example.data.SynchronizationService"/>
¡Ningún servicio comenzó y ningún mensaje de error !
Hola, el código que escribes está funcionando bien. Puede ser que te olvides del siguiente código en el archivo de manifiesto antes de cerrar la etiqueta de la aplicación.
<application>
....
<service android:name=".MyServiceNotifications"/>
</application>
Si usa Xamarin Droid, la manera más fácil de hacerlo es marcar la clase como un servicio como este:
[Service]
public class LongRunningTaskService : Service
{
...
}
Entonces no hay necesidad de ponerlo en el AndroidManifest.xml.