Sie sind auf Seite 1von 23

Cursos de orientacin profesional

ACCIONES COFINANCIADAS CON FONDOS COMUNITARIOS DEL FONDO SOCIAL EUROPEO, A TRAVS DEL PROGRAMA OPERATIVO FONDO SOCIAL EUROPEO DE CANARIAS 20072013 CON UN PORCENTAJE DE CONFINANCIACIN DEL 85%.

Da 1 Qu es Android? Actividades e intenciones Da 2 Layouts y controles grficos Recursos, mens y dilogos Da 3 Persistencia de datos y content providers Grficos y animaciones 2D y 3D Da 4 Servicios en segundo plano Control del hardware especial Da 5 App Widgets y Live folders Publicacin de aplicaciones

Creacin de aplicaciones mviles en Android

Yeray Caballero yeraycaballero@gmail.com Instituto SIANI

Introduccin Servicios locales Servicios remotos

Introduccin Servicios locales Servicios remotos

En muchas ocasiones una aplicacin necesita ejecutar una tarea durante un cierto tiempo sin intervencin del usuario Android soporta esta caracterstica a travs de los servicios. Un servicio es un proceso que se ejecutan en segundo plano sin interaccin con el usuario
Un servicio puede estar recuperando datos de internet cada cierto

tiempo mientras el usuario usa el telfono. El reproductor de msica puede reproducir una cancin mientras el usuario navega por internet.

Android distingue dos tipos de servicios:

Servicios locales Servicios que forman parte de la aplicacin. Servicios privados solo accesibles desde su aplicacin Servicio remotos Servicios que forman parte de otras aplicaciones instaladas en el dispositivo y estn accesibles de forma pblica 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

Introduccin Servicios locales Servicios remotos

Creando un servicio local


1. Crea una clase que extienda la clase Service 2. Sobreescribe los mtodos onCreate, onDestory 3. Implementa la tarea que va a llevar a cabo el servicio 4. Sobreescribe en mtodo 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 aplicacin llama al mtodo 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 travs de una conexin con el servicio. Una vez

conectado el cliente se puede comunicar con el servicio La conexin 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);

Introduccin Servicios locales Servicios remotos

Son servicios pblicos que pueden ser consultados desde otras aplicaciones La comunicacin 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 compilacin del proyecto eclipse se genera el cdigo del Stub que se usar durante la comunicacin La creacin y uso del servicio remoto es exactamente igual a la creacin y uso de un servicio local exceptuando la comunicacin que en este caso es a travs de RPC

Creando un servicio remoto


1. Crear el archivo AIDL que define la interfaz con el cliente 2. Aadir el archivo AIDL al proyecto eclipse. El plugin de eclipse llamar

al aidl compiler y generar el cdigo java 3. Implementa el servicio y devuelve la implementacin en el mtodo 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. Aade el archivo IXXXService.aidl al proyecto eclipse. El compilador

generar el cdigo 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. Aade el archivo IXXXService.aidl al proyecto eclipse. El compilador

generar el cdigo 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

Creacin de aplicaciones mviles en Android

Aplicacin 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

Das könnte Ihnen auch gefallen