Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

442
Vistas
Mantenga un servicio funcionando todo el tiempo, incluso después de reiniciar

Implementé el comando START_STICKY pero el servicio se cancela después de unas horas. Lo que quiero hacer es mantener un servicio ejecutándose siempre en segundo plano y reiniciar incluso cuando se reinicia el dispositivo. ¿Puedo reiniciar el servicio en el método onDestroy de esta manera? o hay un enfoque más conveniente para ello?

 @Override public void onDestroy() { Stop(); Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show(); Intent i= new Intent(getApplicationContext(), MyService.class); startService(i); }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Para asegurarse de que su servicio se está ejecutando incluso después de algunas horas de iniciarlo, deberá usar AlarmManager , que se ejecutará de forma recurrente durante una periodicidad específica, incluso si la aplicación se cierra. Lo que hará es registrar un PendingIntent para que se active el AlarmManager , que será recibido por un BroadcastReceiver y en el BroadcastReceiver verificará si su Servicio se está ejecutando o no. Si se está ejecutando, no haga nada y, si no, inicie el servicio.

Lo que quiero hacer es mantener un servicio ejecutándose siempre en segundo plano y reiniciar incluso cuando se reinicia el dispositivo.

Para ello tendrás que dar este permiso en el manifiesto:

 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

y luego tendrá que crear un BroadcastReceiver personalizado que verificará si se activa una intención, que es Action.BOOT_COMPLETED .

Debe declarar su BroadcastReceiver para captar la intención mencionada anteriormente en el Manifiesto de Android de esta manera:

 <receiver android:name="com.example.MyBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver>

Ahora puede inicializar su AlarmManager en la clase BroadcastReceiver o puede escribir el código para iniciar el servicio de inmediato.

Puede encontrar información sobre AlarmManager aquí .

Descargo de responsabilidad: a partir de Android O , Google dejará de admitir el Servicio en segundo plano ilimitado y llamar a startService() se volverá ilegal (Android lanzará IllegalStateException) al llamar a esta función.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda