Está en la página 1de 23

Cursos de orientación profesional

ACCIONES COFINANCIADAS CON FONDOS COMUNITARIOS DEL FONDO SOCIAL EUROPEO,


A TRAVÉS DEL PROGRAMA OPERATIVO FONDO SOCIAL EUROPEO DE CANARIAS 20072013
CON UN PORCENTAJE DE CONFINANCIACIÓN DEL 85%.
 Día 1
 ¿Qué es Android?
 Actividades e intenciones
 Día 2
 Layouts y controles gráficos
 Recursos, menús y diálogos
 Día 3
 Persistencia de datos y content providers
 Gráficos y animaciones 2D y 3D
 Día 4
 Servicios en segundo plano
 Control del hardware especial
 Día 5
 App Widgets y Live folders
 Publicación de aplicaciones
Creación de aplicaciones móviles en Android

Yeray Caballero
yeraycaballero@gmail.com
Instituto SIANI
 Introducción
 Servicios locales
 Servicios remotos
 Introducción
 Servicios locales
 Servicios remotos
 En muchas ocasiones una aplicación necesita ejecutar una tarea
durante un cierto tiempo sin intervención del usuario

 Android soporta esta característica a través de los servicios.

 Un servicio es un proceso que se ejecutan en segundo plano sin


interacción con el usuario
 Un servicio puede estar recuperando datos de internet cada cierto
tiempo mientras el usuario usa el teléfono.
 El reproductor de música puede reproducir una canción mientras el
usuario navega por internet.
Android distingue dos tipos de servicios:

 Servicios locales
Servicios que forman parte de la aplicación. Servicios privados solo
accesibles desde su aplicación

 Servicio remotos
Servicios que forman parte de otras aplicaciones instaladas en el
dispositivo y están accesibles de forma pública por otras aplicaciones.
Existen dos roles cuando se trabaja con servicios

 Controlador del servicio


Es el encargado de arrancar y parar el servicio. Este rol lo puede cumplir
cualquier componente

 Cliente del servicio


Se conecta al servicio obteniendo una referencia de su IBinder, dese el
que podrá hacer peticiones al mismo
 Introducción
 Servicios locales
 Servicios remotos
 Creando un servicio local

1. Crea una clase que extienda la clase Service


2. Sobreescribe los métodos onCreate, onDestory
3. Implementa la tarea que va a llevar a cabo el servicio
4. Sobreescribe en método onBind() si se va a permitir peticiones de un
cliente
5. Registra el servicio en el archivo AndroidManifest.xml
 Creando un servicio local
public class LocalService extends Service {

public void onCreate() {


super.onCreate();
}
public void onDestroy() {
super.onDestroy();
}
}
AndroidManifest.xml
<service class=".LocalService">
<intent-filter>
<action android:value="org.osl.android.LocalService" />
</intent-filter>
</service>
 Creando un servicio local
public interface IMyService {
public int getStatusCode();
}

public class LocalService extends Service {


private int statusCode;
private MyServiceBinder myBinder = new MyServiceBinder();

public IBinder onBind(Intent intent) {


return myBinder;
}
public class MyServiceBinder extends Binder implements
IMyService {
public int getStatusCode() {
return statusCode;
}
}}
 Usando un servicio local

 Llamando a startService()
 La aplicación llama al método Context.onStartService()
 Este llamará al onCreate del servicio. Si ya se creó llamará al onStart
 El servicio se ejecutará hasta que se llame a stopService() o el mismo
llame a stopself

 Llamando a bindService()
 Realiza un enlace a través de una conexión con el servicio. Una vez
conectado el cliente se puede comunicar con el servicio
 La conexión permanece hasta que se llama a unbindService
 Usando un servicio local
Intent intent = new Intent(Context,LocalService.class);
startService(intent);

ServiceConnection conn = new ServiceConnection() {


@Override
public void onServiceConnected(ComponentName name,
IBinder service) {
IMyService myService = (IMyService) service;
statusCode = myService.getStatusCode();
}
}

Intent intent = new Intent(Context, LocalService.class);


bindService(intent, conn, Context.BIND_AUTO_CREATE);
 Introducción
 Servicios locales
 Servicios remotos
 Son servicios públicos que pueden ser consultados desde otras
aplicaciones

 La comunicación es entre procesos y se realiza mediante RPC


(Remote Procedure Call)

 Android aporta un AIDL (Android Interface Definition Language) para


definir la interfaz que el servicio expone al cliente.

 La interfaz AIDL define el contrato entre cliente y servidor. A partir del


proceso de compilación del proyecto eclipse se genera el código del Stub
que se usará durante la comunicación

 La creación y uso del servicio remoto es exactamente igual a la creación y


uso de un servicio local exceptuando la comunicación que en este caso es
a través de RPC
 Creando un servicio remoto

1. Crear el archivo AIDL que define la interfaz con el cliente


2. Añadir el archivo AIDL al proyecto eclipse. El plugin de eclipse llamará
al aidl compiler y generará el código java
3. Implementa el servicio y devuelve la implementación en el método
onBind
4. Registra el servicio al archivo AndroidManifest.xml
 Creando un servicio remoto
public interface IMyRemoteService {
public int getStatusCode();
}

public class RemoteService extends Service {


int statusCode;
IMyRemoteService.Stub myStub = newIMyRemoteService.Stub() {
public IBinder onBind(Intent intent) {
public int getStatusCode() throws RemoteException {
return statusCode;
}
}
}

public IBinder onBind(Intent intent) {


return myStub;
}
 Usando un servicio remoto

1. Crea un proyecto Android llamado ServiceClient


2. Añade el archivo IXXXService.aidl al proyecto eclipse. El compilador
generará el código java
3. Conecta al servicio antes de hacerle peticiones, creando un
ServiceConnection
 Usando un servicio remoto
ServiceConnection conn = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name,
IBinder service) {
RemoteService myRemoteService;
myRemoteService = IRemoteService.Stub.asInterface(service);
try {
statusCode = myRemoteService.getStatusCode();
} catch (RemoteException ex) {
. . .
}
}
 Usando un servicio remoto

1. Crea un proyecto Android llamado ServiceClient


2. Añade el archivo IXXXService.aidl al proyecto eclipse. El compilador
generará el código java
3. Conecta al servicio antes de hacerle peticiones, creando un
ServiceConnection
4. Registra en el archivo AndroidManifest .xml el permiso para usar el
servicio
Creación de aplicaciones móviles en Android

Aplicación que
demuestra el uso de
servicios
 Servicios en segundo plano
 Android Developer Reference
▪ http://developer.android.com/guide/topics/fundamentals.html

 Android Application Development


▪ Reto Meier, Editorial Wrox

También podría gustarte