Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Cómo crear un servicio de fondo siempre en ejecución?

Mi pregunta es cómo crear un servicio de fondo siempre en ejecución. He creado un IntentService que se ejecuta en segundo plano, siempre y cuando la aplicación se está ejecutando. Sin embargo, cuando se cancela la aplicación, el servicio se ha ido también. Lo que quiero crear es crear un servicio de fondo que siempre se ejecuta y publica las notificaciones. (Similar a whatsapp, facebook o cualquier otra aplicación similar.)

Cuando se hace clic en la notificación, también debe iniciar la aplicación.

  • Evita que los botones oculten el teclado virtual en Android
  • ¿Cuál es el significado de PicturePileLayerContent (...): Warning: painting PicturePile sin contenido
  • Prueba en vivo de Android LVL
  • Pantalla de flujo de android
  • Buscando un evento más universal onUserInteraction () - no solo en una actividad
  • Al cerrar la sesión, desactive la pila del historial de actividades, evitando que el botón "volver" abra las actividades activadas
  • ¿Cómo puedo hacerlo?

  • Eliminar la sombra de barra de notificación en la aplicación de Android
  • Cómo crear barra de progreso como la imagen en Android
  • Proveedor de contenido de Android y relación de muchos a muchos DB
  • Ant jar error: Execute failed: java.io.IOException: No se puede ejecutar el programa ... $ {aapt} ": error = 2, No hay tal archivo o directorio
  • Obtención de la altura de la vista de texto antes de la representación en el diseño
  • API de geocodificación de Android BroadcastReceiver no activado
  • 3 Solutions collect form web for “¿Cómo crear un servicio de fondo siempre en ejecución?”

    El mejor para hacer esto es crear el servicio de encargo que extiende su servicio no intento del servicio. E iniciar un hilo separado en su servicio. Inicie el servicio en el lanzamiento de la aplicación Una más importante que no lo atan a cualquier servicio causa causa será asesinado una vez que su objeto destruido. Entonces el método startStartCommand () devolverá START_STICKY te daré la implementación de la muestra.

    public class CustomService extends Service { @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { // TODO Auto-generated method stub return START_STICKY; } @Override public void onTaskRemoved(Intent rootIntent) { // TODO Auto-generated method stub Intent restartService = new Intent(getApplicationContext(), this.getClass()); restartService.setPackage(getPackageName()); PendingIntent restartServicePI = PendingIntent.getService( getApplicationContext(), 1, restartService, PendingIntent.FLAG_ONE_SHOT); //Restart the service once it has been killed android AlarmManager alarmService = (AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE); alarmService.set(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() +100, restartServicePI); } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); //start a separate thread and start listening to your network object } 

    }

    OnTaskRemoved reinicia su servicio después de 100milli segundos una vez que se mata. START_STICKY no funciona en kitkat. Tienes que implementar onTAskRemoved. Y una cosa más si el usuario va a la configuración de la aplicación y detiene su servicio, entonces no hay manera de que pueda reiniciarlo

    Debe iniciar el servicio utilizando el comando start. Y debe volver a escribir la función onStartCommmand en servicio:

      @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; } 

    START_STIKY significa que el servicio se reiniciará automámicamente ( http://developer.android.com/reference/android/app/Service.html#START_STICKY )

    Si utiliza la función bindService en lugar de startCommand, su servicio se detendrá entonces todas las actividades binded se reducirá.

    Más que eso si usted desea autostart su servicio después del dispositivo que arranca usted debe implementar BroadcastReceiver para recibir ACTION_BOOT_COMPLETED intento y manejar este acontecimiento para el servicio del comienzo.

    Lo siguiente hará mientras su actividad esté alrededor.

     @Override public int onStartCommand(Intent intent, int flags, int startId) { return START_STICKY; } 

    Lamentablemente, cuando se cancela tu aplicación y el dispositivo se queda sin recursos, lo matará.
    Pero si desea mantener su servicio funcionando durante días, asegúrese de que está ejecutando su servicio en primer plano.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.