Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

445
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda