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:
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.
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.
Recuerda que puedes comenzar este curso con tu suscripción de OpenWebinars. Si todavía no estás suscrito, aprovecha para hacerlo ahora.