Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información. Aceptar

Android Annotations: UiThread Annotation

David Sebastián Majón
  • Escrito por David Sebastián Majón el 14 de Mayo de 2019
  • 1 min de lectura | Desarrollo móvil
Android Annotations: UiThread Annotation
El reproductor de video será cargado en breves instantes.

En esta práctica podrás ver cómo trabajar con concurrencia y API Rest empleando AndroidAnnotations.

Por qué emplear AndroidAnnotations

AndroidAnnotations es un framework que facilita mucho el desarrollo, además facilita tanto trabajar con procesos en paralelo como interactuar con la interfaz de usuario desde un proceso en paralelo.

Ejemplo de trabajo con un proceso en paralelo

Primero tenemos que crear un nuevo proyecto Android Studio, para lo que seleccionaremos una actividad vacía:

Imagen 0 en Android Annotations: UiThread Annotation

Clicamos el botón Next y después finalizamos pulsando el botón Finish, manteniendo la configuración que aparece por defecto.

Una vez lanzado el proyecto, tenemos que añadir las dependencias de AndroidAnnotations en Gradle. Para ello las insertamos dentro del código, de manera que quede de esta forma:

def AAVersion = '4.6.0'

dependencies {
    annotationProcessor "org.androidannotations:androidannotations:$AAVersion"
    implementation "org.androidannotations:androidannotations-api:$AAVersion"

    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

Al realizar los cambios tenemos que sincronizar y así se habrán añadido las dependencias del framework.

Después editamos el archivo AndroidManifest.xml para indicar a la aplicación que no acceda a la MainActivity por defecto, si no a la generada por AndroidAnnotations. Este cambio se realiza sustituyendo este código:

<activity android:name=”.MainActivity”>

Por este otro código:

<activity android:name=”.MainActivity_”>

Se nos marcará un error, pero no hay que preocuparse porque se solventará automáticamente.

Ahora vamos a crear un proceso en background que interactúe posteriormente con la interfaz de usuario, pero antes tenemos que mejorar la MainActivity con AndroidAnnotations y añadir un hilo en background, creando un proceso en background con una lógica, para que cuando finalice la misma ejecute la anotación @UiThread.

Esto se consigue cambiando este código:

public class MainActivity extends AppCompatActivity {

@Override
protected void OnCreate(Bundle savedInstanceState) {
			super.OnCreate(savedInstanceState);
			setContentView(R.layout.activity_main);
    }
}

Por esto otro:

@EActivity(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {

	@Background
	void miProcesoEnBackground() {

			modificaciondeUIConUiThread();
	}

	@UiThread
	void modificaciondeUIConUiThread() {

}

Como el asistente nos ha creado una capa visual, vamos a pestaña activity_main.xml y la id del TextView la llamamos tv_example.

Imagen 1 en Android Annotations: UiThread Annotation

Después modificaremos de nuevo el archivo MainActivity.java:

@EActivity(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {

	@ViewById
	TextView tv_example;

	@AfterViews
	void initAfterViews() {
			miProcesoEnBackground();

	@Background
	void miProcesoEnBackground() {

			for (int i=0; i<10000; i++) {
					//TODO…
			}
			
			modificaciondeUIConUiThread();
	}

	@UiThread
	void modificaciondeUIConUiThread() {
			tv_example.setText(“FINAL!”);
}

De esta forma inicializaremos con Android Annotations, y además desde el hilo principal lanzaremos un proceso en backgound, que va a hacer una lógica, y al estar en un proceso en background, tenemos que llamar al hilo de interfaz gráfica para que pueda escribir la interfaz.

Lanzamos la aplicación en el dispositivo virtual, y podemos comprobar que el proceso se ejecuta rápidamente y nos muestra directamente el mensaje que habíamos insertado.

En este curso de Android Annotations aprenderás a crear y consumir una API rest y trabajar concurrencia para dominar este framework para crear aplicaciones para Android.

curso-android-threads-apis

Recuerda que puedes comenzar este curso con tu suscripción de OpenWebinars. Si todavía no estás suscrito, aprovecha para hacerlo ahora.

Relacionado

Te dejamos una selección de cursos, carreras y artículos

Programador Android

Programador Android

carrera

Incluye 6 cursos:

  • Curso de Introducción a la programación con Pseudocódigo
  • Curso de Java 8 desde Cero
  • Curso de Git, GitHub y Jekyll

y 3 cursos más!

Duración: 47 horas y 1 minuto

Estas son algunas de las empresas que ya confían en OpenWebinars

Profesores y profesionales

Nuestros docentes son profesionales que trabajan día a día en la materia que imparten

Conviértete en profesor de OpenWebinars