Download - Creación de Procesos en Android
![Page 1: Creación de Procesos en Android](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/1.jpg)
Creación de
procesos
Jose Manuel Castillo Perez
Rafael González Jiménez
![Page 2: Creación de Procesos en Android](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/7.jpg)
Gestión de procesos
![Page 8: Creación de Procesos en Android](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/11.jpg)
Gestión de procesos
![Page 12: Creación de Procesos en Android](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/12.jpg)
Gestión de procesos
![Page 13: Creación de Procesos en Android](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/13.jpg)
Creación de hebras
Existen 2 opciones:
- Clase Thread de Java.
- Clase AsyncTask.
![Page 14: Creación de Procesos en Android](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/17.jpg)
AsyncTask
MiTarea tarea = newMiTarea();
tarea.execute(p1, p2, p3);
![Page 18: Creación de Procesos en Android](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/18.jpg)
AsyncTask
![Page 19: Creación de Procesos en Android](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/19.jpg)
AsyncTask
![Page 20: Creación de Procesos en Android](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/20.jpg)
AsyncTask
![Page 21: Creación de Procesos en Android](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/21.jpg)
Operaciones simples:
Ejemplos reales
![Page 22: Creación de Procesos en Android](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/22.jpg)
Operaciones simples
![Page 23: Creación de Procesos en Android](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/23.jpg)
Operaciones simples
![Page 24: Creación de Procesos en Android](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/24.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/25.jpg)
Operaciones simples
![Page 26: Creación de Procesos en Android](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/26.jpg)
Mensajes
android handler message
![Page 27: Creación de Procesos en Android](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/27.jpg)
Mensajes
Los Handlers implementan un mecanismo
de paso de mensajes entre threads
![Page 28: Creación de Procesos en Android](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/28.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/29.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/30.jpg)
Mensajes
![Page 31: Creación de Procesos en Android](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/31.jpg)
“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](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/32.jpg)
“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](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/33.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/34.jpg)
Preguntas
![Page 35: Creación de Procesos en Android](https://reader034.vdocuments.co/reader034/viewer/2022052316/557b8327d8b42aff318b5440/html5/thumbnails/35.jpg)
FIN
José Manuel Castillo
Rafael González