Vamos a ver como crear un servicio android en background para que se ejecute en segundo plano en nuestras aplicaciones para esta plataforma móvil, te mostraré como crear un servicio, como inicarlo y como detenerlo, de paso daremos un repaso a como ejecutar una tarea en segundo plano con la clase AsyncTask.
Antes comenzaremos con los servicios en background ya que son muy importantes, en este caso reciente necesitamos por ejemplo que una app android que este constantemente leyendo una base de datos, entonces que recurriremos a los background services de android.
COMO CREAR UNA CLASE SERVICE
Para crear un servicio android basta con crear una clase que herede de la clase Service y sobreescribimos los metodos onBind(), onCreate(), onStart() y onDestroy().
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public class Notificaciones extends Service {
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
}
@Override
public void onStart(Intent intent, int startId) {
}
@Override
public void onDestroy() {
}
}
|
Ahora en nuestro ejemplo vamos a necesitar que al iniciar el servicio se mande a realizar una tarea en background con la clase AsyncTask por lo que dentro del metodo onStart necesitamos agregar la siguiente linea:
1
|
new ChecarNotificaciones().execute();
|
Tambien deberás agregar esta nueva clase en nuestro manifest como un servicio:
1
|
<service android:name=«com.tupaquete.app.Notificaciones» android:enabled=«true» />
|
UN REPASO A LA CLASE ASYNCTASK
Nuestra clase ChecharNotificaciones hereda de AsyncTask que sirve para ejecutar tareas en background, en el metodo doInBackground procesaremos nuestra tarea y en el metodo onPostExecute realizaremos todo aquello para cuando nuestra tarea termine de procesar, aqui es donde tambien agregaremos un codigo para en 10 segundos volver a ejecutar esta tarea.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
private class ChecarNotificaciones extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
//NUESTRO CODIGO
return responseStr;
}
@Override
protected void onPostExecute(String result) {
//NUESTRO CODIGO
new Handler().postDelayed(new Runnable() {
public void run() {
new ChecarNotificaciones().execute();
}
}, 10000);
super.onPostExecute(result);
}
}
|
COMO INICIAR UN SERVICIO ANDROID
Para iniciar un servicio en android basta con crear un metodo que realice un nuevo intent a la clase de tipo Service y llamar la funcion startService.
1
2
3
4
5
6
7
|
iniciarServicioNotificaciones();
public void iniciarServicioNotificaciones(){
stopService(new Intent(getApplicationContext(), Notificaciones.class));
Intent intentNoti = new Intent(this, Notificaciones.class);
startService(intentNoti);
}
|
COMO DETENER UN SERVICIO ANDROID
Para detener el servicio unicamente basta con llamar a la función stopService con el intent de la clase de tipo Service.
1
|
stopService(new Intent(getApplicationContext(), Notificaciones.class));
|
Te esperamos en los siguientes artículos en donde hablaremos mas acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.