Acceder Registrarme

ANDROID: 015-CREACIÓN DE SERVICIOS EN SEGUNDO PLANO


Avanzando aún más en los temas de Android, ahora veremos la manera de crear servicios en segundo plano con lo que podremos lanzar procesos que se ejecuten por mucho que la aplicación se cierre. Esto nos servirá para muchos casos en los cuales podríamos desarrollar aplicaciones que nos notifiquen cierto evento o que siempre tengan un listener dispuesto a atender cierto servicio.

Autor: Kevin Arias (Ver todos sus post)

Android Servicios Segundo plano

Fecha de publicación: 2016-07-26 14:23:28

Ayúdanos con el arduo trabajo que realizamos.
[ANDROID] ANDROID: 015-CREACIÓN DE SERVICIOS EN SEGUNDO PLANO

En este caso tendremos que hacer uso de los servicios en Android el cual consiste en crear una clase que herede de Service para así sobreescribir ciertos métodos que nos ayudarán a manejar procesos en segundo plano con el fin que mejor nos parezca.

Para este caso, aquí les dejo el código más importante del ejemplo.

package com.codideep.app;

import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.support.annotation.Nullable;

public class ServiceAudio extends Service
{
    private Context thisContext=this;
    private MediaPlayer mediaPlayer;

    @Override
    public void onCreate()
    {

    }

    @Override
    public int onStartCommand(Intent intent, int flag, int idProcess)
    {
        mediaPlayer=MediaPlayer.create(thisContext, R.raw.madre);
        mediaPlayer.start();

        return START_STICKY;
    }

    @Override
    public void onDestroy()
    {
        mediaPlayer.stop();
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

El código anterior sólo es la definición del servicio que hereda de Service, sin embargo, existen otros puntos que deben ser tratados apra manejar esto. Seguidamente se les deja el video donde se explica cada parte de esto.




INFORMACIÓN SOBRE EL AUTOR DEL ARTÍCULO
KEVIN ARNOLD ARIAS FIGUEROA (SOFTWARE ARCHITECT - CODIDEEP E.I.R.L.): Profesional en tecnologías de la información con más de 10 años de experiencia en desarrollo de software empresarial, con amplios conocimientos en manejo de arquitecturas de software de escala vertical y horizontal, gestión de proyectos, liderazgo de equipos y dominio en modelado de procesos a gran escala.


  • Debes estar logueado para realizar comentarios

Usuario de (México)
muchas gracias, me sirvió
  • 2018-04-11 18:27:00
  • Respuestas(1)
Usuario de (Perú)
Gracias a ti por visitar Codideep, Julio...<br> Saludos.
  • 2018-04-11 19:04:18
Usuario de (No especificado)
Hola, como puedo hacer para que en android 8 no se detenga el servicio cuando se cierra la app? xq me muestra un cartel de error
  • 2019-06-29 15:28:48
  • Respuestas(10)
Usuario de (Perú)
Hola Braian, exactamente qué error te muestra?
  • 2019-06-29 15:31:13
Usuario de (Perú)
Porque con el ejemplo del video debería seguir corriendo en segundo plano sin ningún problema.
  • 2019-06-29 15:31:48
Usuario de (No especificado)
Te mando el error completo
  • 2019-06-29 15:32:33
Usuario de (No especificado)
2019-06-29 17:31:20.975 26234-26234/com.sistemasceibo.pruebaservicio E/AndroidRuntime: FATAL EXCEPTION: main<br> Process: com.sistemasceibo.pruebaservicio, PID: 26234<br> java.lang.RuntimeException: Unable to stop service com.sistemasceibo.pruebaservicio.ServiceMusic@da33a4e: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.stop()' on a null object reference<br> at android.app.ActivityThread.handleStopService(ActivityThread.java:3620)<br> at android.app.ActivityThread.-wrap27(Unknown Source:0)<br> at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1757)<br> at android.os.Handler.dispatchMessage(Handler.java:106)<br> at android.os.Looper.loop(Looper.java:164)<br> at android.app.ActivityThread.main(ActivityThread.java:6647)<br> at java.lang.reflect.Method.invoke(Native Method)<br> at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)<br> at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)<br> Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.stop()' on a null object reference<br> at com.sistemasceibo.pruebaservicio.ServiceMusic.onDestroy(ServiceMusic.java:32)<br> at android.app.ActivityThread.handleStopService(ActivityThread.java:3602)<br> at android.app.ActivityThread.-wrap27(Unknown Source:0) <br> at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1757) <br> at android.os.Handler.dispatchMessage(Handler.java:106) <br> at android.os.Looper.loop(Looper.java:164) <br> at android.app.ActivityThread.main(ActivityThread.java:6647) <br> at java.lang.reflect.Method.invoke(Native Method) <br> at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) <br> at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811) 
  • 2019-06-29 15:32:44
Usuario de (No especificado)
NullPointerException en la linea 32, método onDestroy, mediaplayer.stop()
  • 2019-06-29 15:34:45
Usuario de (Perú)
Te recomiendo que revises bien el video porque en el error; por lo que veo, hay alguna variable, clase o similar que no lo haz inicializado correctamente.
  • 2019-06-29 15:34:55
Usuario de (Perú)
Recuerda que la variable "mediaPlayer" debes declararlo de forma global, no vayas a declarar la variable en "onStartCommand".
  • 2019-06-29 15:36:07
Usuario de (No especificado)
igualmente en el código del video está declarado en onStartCommand.<br> ya lo corregi, y supuestamente deberia segir reproduciendo la música, pero parece que si cierro el activity se cierra tambien el proceso
  • 2019-06-29 15:40:47
Usuario de (Perú)
En el video no está declarado ahí, observa bien... está declarado fuera pero asignado en onCommandStart... por eso te digo que declares en el lugar correcto, revisa bien el código.
  • 2019-06-29 15:41:55
Usuario de (No especificado)
perdon me confundí , inicializado. <br> igualmente lo copie de aqui arriba en el post.<br> gracias por contestar tan rápido
  • 2019-06-29 15:49:13
Usuario de (No especificado)
Disculpa Kevin en el emulador de android studio me funciona perfectamente pero cuando emulo desde el telefono (android 9.0 version MIUI) no me funciona directamente despues de cerrar la aplicacion no sigue corriendo. sera que necesito algún permiso para ejecutar la app?
  • 2020-01-27 11:48:24
  • Respuestas(1)
Usuario de (Perú)
Buen día, Fabricio. Para serte sincero, no he probado este ejemplo en versiones superiores a las del video, por lo que no podría asegurarte del todo que sea un tema de permisos o bien podría ser la versión misma de Android.
  • 2020-01-27 11:52:19
Usuario de (No especificado)
ola boa noite . tem como voce concequir os arquivos deste projeto para mim?
  • 2020-08-14 22:10:27
  • Respuestas(8)
Usuario de (Perú)
Buenas noches, lo tienes en el botón "Descargar archivo adjunto" de la parte superior.<br> Saludos.
  • 2020-08-14 22:12:09
Usuario de (No especificado)
ta falando que o aquivo não estar disponivel
  • 2020-08-14 22:14:49
Usuario de (Perú)
Normal está descargando, aquí te dejo el enlace https://mega.nz/#!qoIAzYzY!JKrXPHpwil-vlzfS0DEyu7hfON4d-sGbuwuZSONvsww y la contraseña es la siguiente **android_codideep.com**.
  • 2020-08-14 22:15:57
Usuario de (No especificado)
obrigado meu amigo, tenha um bom trabalho.
  • 2020-08-14 22:19:01
Usuario de (Perú)
Cordiales saludos, Juliano. Buenas noches.
  • 2020-08-14 22:20:00
Usuario de (No especificado)
oi amigo o arquivo para estrair estar pedindo senha
  • 2020-08-14 22:23:29
Usuario de (Perú)
Te di la contraseña en el comentario de más arriba, lo que está marcado con negrita.
  • 2020-08-14 22:25:05
Usuario de (No especificado)
ok deu certo muito obrigado
  • 2020-08-14 22:27:20