Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

446
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!