creación de procesos en android

35
Creación de procesos Jose Manuel Castillo Perez Rafael González Jiménez

Upload: rafa-gonzalez-jimenez

Post on 13-Jun-2015

368 views

Category:

Technology


0 download

DESCRIPTION

Trabajo sobre la creación de procesos y hebras en ANDROID

TRANSCRIPT

Page 1: Creación de Procesos en Android

Creación de

procesos

Jose Manuel Castillo Perez

Rafael González Jiménez

Page 2: Creación de Procesos en Android

Indice

Introducción

Gestión de procesos

Creación de hebras

Procesos de cálculo

Mensajes

Service en Android

Conclusión

Page 3: Creación de Procesos en Android

Introducción

Sistema Operativo basado en el kernel de

Linux, gratuito y multiplataforma. Este sistema

está diseñado principalmente para dispositivos

móviles con pantalla táctil.

Permite programar aplicaciones en una

variación de un lenguaje de programación

muy conocido como es Java y dicha

variación se llama Dalvik.

Page 4: Creación de Procesos en Android

Proceso Programa que se encuentra en ejecución, es decir,

un conjunto de instrucciones que se encuentran actualmente en ejecución en nuestro computador.

Estos procesos son gestionados por el Sistema Operativo y están formados por:

Instrucciones que van a ser ejecutadas por el microprocesador.

Los valores de los registros en un momento dado.

Memoria que ha reservado para su ejecución.

Otra información que permite al Sistema Operativo la planificación de dicho proceso.

Page 5: Creación de Procesos en Android

Proceso

Para crear un proceso existen 4 formas:

Durante el arranque del sistema.

En la ejecución de una llamada al sistema

para la creación de un proceso.

Una petición del usuario para crear un

proceso.

El inicio de un trabajo por lotes.

Page 6: Creación de Procesos en Android

Proceso

Los posibles estados por los cuales puede pasar un proceso son:

Ejecución: el proceso está haciendo uso del procesador.

Bloqueado: el proceso no puede ejecutarse hasta que ocurra un evento.

Listo: el proceso ha terminado de ejecutarse y deja libre el procesador.

Page 7: Creación de Procesos en Android

Gestión de procesos

Page 8: Creación de Procesos en Android

Gestión de procesos

Cada aplicación se ejecuta en su mismo proceso y todos los componentes de la aplicación se ejecuten en ese proceso, de manera personalizada.

Todas las operaciones lentas y de bloqueo en una actividad se debe hacer en un nuevo hilo, para evitar la ralentización de la interfaz de usuario

Page 9: Creación de Procesos en Android

Gestión de procesos

Terminación:

Una aplicación puede llamar a un método

para matar procesos que tiene permiso para

matar.

Android tiene una cola utilizada menos

recientemente que realiza un seguimiento de

las aplicaciones que no se han utilizado. Si el SO

empieza a quedarse sin memoria, matará al menos la aplicación utilizada recientemente.

Page 10: Creación de Procesos en Android

Gestión de procesos PRIMER PLANO PROCESO

EL proc se requiere para lo que está haciendo el usuario ahora.

PROCESO VISIBLE

Puede afectar a lo que el usuario ve en pantalla

SERVICIO DE PROCESO

Hacen cosas que al usuario le interesa, pero no tiene nada que ver con lo que ve en pantalla.

ANTECEDENTES PROCESOS

No tienen impacto directo en la experiencia del usuario, y el sistema los puede matar cuando quiera

PROCESO DE VACIO

No cumple ninguno de los componentes de aplicaciones activas. La única razón para mantenerlo, es con fines de almacenamiento en caché para mejorar un determinado tiempo.

Page 11: Creación de Procesos en Android

Gestión de procesos

Page 12: Creación de Procesos en Android

Gestión de procesos

Page 13: Creación de Procesos en Android

Creación de hebras

Existen 2 opciones:

- Clase Thread de Java.

- Clase AsyncTask.

Page 14: Creación de Procesos en Android

AsyncTask

AsyncTask es una clase abstracta que

proporciona Android y nos ayuda a

utilizar hilos correctamente. Esta clase nos

permite crear hilos secundarios para no

bloquear el hilo principal y mostrar el

resultado en el hilo principal.

Page 15: Creación de Procesos en Android

AsyncTask class MiTarea extends AsyncTask<Parametros, Progreso, Resultado> {

@Override protected void onPreExecute() {

}

@Override protected Resultado doInBackground(Parametros... par) {

}

@Override protected void onProgressUpdate(Progreso... prog) {

}

@Override protected void onPostExecute(Resultado result) {

}

}

Page 16: Creación de Procesos en Android

AsyncTask La funcionalidad de cada uno de los métodos anteriores es:

onPreExecute(): se utiliza para configurar la tarea y mostrar en la interfaz de usuario que ha empezado la tarea con el nuevo hilo.

doInBackground(Parametros…): aquí realizamos la tarea que ejecuta el hilo.

onProgressUpdate(Progress…): mostramos el progreso de la tarea al usuario y se ejecuta en el hilo principal.

onPostExecute(Result): aquí mostramos el resultado de la tarea en la interfaz de usuario, ya que la tarea que se ejecutaba en el nuevo hilo ha terminado.

Page 17: Creación de Procesos en Android

AsyncTask

MiTarea tarea = newMiTarea();

tarea.execute(p1, p2, p3);

Page 18: Creación de Procesos en Android

AsyncTask

Page 19: Creación de Procesos en Android

AsyncTask

Page 20: Creación de Procesos en Android

AsyncTask

Page 21: Creación de Procesos en Android

Operaciones simples:

Ejemplos reales

Page 22: Creación de Procesos en Android

Operaciones simples

Page 23: Creación de Procesos en Android

Operaciones simples

Page 24: Creación de Procesos en Android

Operaciones simples

Función suma

public void SUMA(View view) { EditText txtOp1 = (EditText) findViewById(R.id.operator1); EditText txtOp2 = (EditText) findViewById(R.id.operator2); int result = Integer.parseInt(txtOp1.getText().toString()) + Integer.parseInt(txtOp2.getText().toString()); TextView lblRes = (TextView) findViewById(R.id.lblResult); lblRes.setText(Integer.toString(result)); }

Page 25: Creación de Procesos en Android

Operaciones simples

Page 26: Creación de Procesos en Android

Mensajes

android handler message

Page 27: Creación de Procesos en Android

Mensajes

Los Handlers implementan un mecanismo

de paso de mensajes entre threads

Page 28: Creación de Procesos en Android

Mensajes Creación de una barra de progreso:

1º Declaración al inicio del handler private Handler puente = new Handler() { @Override public void handleMessage(Message msg) { } };

2º Le pasamos un mensaje y creamos progressbar progressDialog = new ProgressDialog(EjemplotutoActivity.this); progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressDialog.setMessage("Loading..."); progressDialog.setMax(10000); progressDialog.setProgress(0); progressDialog.setCancelable(false); progressDialog.show();

Page 29: Creación de Procesos en Android

Mensajes 3º Dentro de un thread que creemos, vamos

pasando el contador de la barra:

Thread th1 = new Thread(new Runnable() { }

4º Pasar el contador al progressBar por nuestro handler:

Message msg = new Message();

msg.obj = contador;

puente.sendMessage(msg);

5º Recibir el handler en la progressBar dentro de la función handleMessage:

progressDialog.setProgress((Integer)msg.obj);

Page 30: Creación de Procesos en Android

Mensajes

Page 31: Creación de Procesos en Android

“Service” en Android

Componente que trabaja en segundo plano y

no es visible explícitamente al usuario. Apoyo

multitarea real para Android, ya que se puede

ejecutar en su propio proceso.

Declaración:

<service android:name="yourclasss"> </service>

Page 32: Creación de Procesos en Android

“Service” en Android Podemos especificar que nuestro Service se ejecute en

un proceso separado con el atributo process :

android:process=":process_description“

El prefijo dos puntos delante del nombre indica al sistema que el servicio es privado para la aplicación que lo declara. Si no usamos los dos puntos de prefijo, el Service sería un proceso global:

<service

android:name="Servicio"

android:process=":my_process"

android:icon="@drawable/icon"

android:label="@string/service_name">

</service>

Page 33: Creación de Procesos en Android

Conclusión

Para finalizar, podemos ver como está

basado el SO android en el kernel de

linux, ya que en cuanto a creación de

procesos, y gestión de los mismos es

similar a sistemas unix.

Page 34: Creación de Procesos en Android

Preguntas

Page 35: Creación de Procesos en Android

FIN

José Manuel Castillo

Rafael González