Mantener el servicio funcionando

¿Alguien puede decirme la forma de mantener un servicio siempre ejecutándose o reiniciarse cuando el usuario lo cierra? He visto que los servicios de Facebook se reinician cuando borro la memoria. No quiero hacer ForegroundServices.

Debes crear un servicio fijo. Lea más sobre esto aquí .

Para ello, devuelve START_STICKY en onStartCommand.

@Override public int onStartCommand(Intent intent, int flags, int startId) { Log.i("LocalService", "Received start id " + startId + ": " + intent); // We want this service to continue running until it is explicitly // stopped, so return sticky. return START_STICKY; } 

Lea también sobre la aplicación: persistente que es “Si la aplicación debe seguir ejecutándose o no en todo momento”. Esto es más problemático: el sistema intentará no matar tu aplicación, lo que afectará a otros en el sistema, debes tener cuidado al usarla.

Copié esto de un servicio que utilicé en una aplicación que hice antes.

ES IMPORTANTE NO ACTUALIZAR CUALQUIER UI. porque no tienes una interfaz de usuario en los servicios. esto se aplica a las Tostadas también.

buena suerte

 public class nasserservice extends Service { private static long UPDATE_INTERVAL = 1*5*1000; //default private static Timer timer = new Timer(); @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } @Override public void onCreate(){ super.onCreate(); _startService(); } private void _startService() { timer.scheduleAtFixedRate( new TimerTask() { public void run() { doServiceWork(); } }, 1000,UPDATE_INTERVAL); Log.i(getClass().getSimpleName(), "FileScannerService Timer started...."); } private void doServiceWork() { //do something wotever you want //like reading file or getting data from network try { } catch (Exception e) { } } private void _shutdownService() { if (timer != null) timer.cancel(); Log.i(getClass().getSimpleName(), "Timer stopped..."); } @Override public void onDestroy() { super.onDestroy(); _shutdownService(); // if (MAIN_ACTIVITY != null) Log.d(getClass().getSimpleName(), "FileScannerService stopped"); } }