logoImagina
iconCurso
Te recomendamos nuestro curso de Android 13
Descubre el curso de Android 13
Ir al curso
Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *

Cómo hacer una Carga de Datos en Android

iconImage
Publicado 2024-03-07
Actualizado el 2024-03-21

Cómo hacer una Carga de Datos con Actualización de Interfaz

El objetivo de este tutorial es implementar una Actividad en la cual podamos realizar una carga de datos y mostrar el progreso al usuario mientras espera.

En este ejemplo, no realizaremos una carga de datos real, simplemente crearemos una secuencia que muestre un TextView con un progreso del 0% al 100%. Una vez completada la "carga", se abrirá otra actividad.

Esta técnica se puede utilizar a partir de Android 1.5 (CupCake).

Creación del proyecto y actividades

En primer lugar, crearemos un nuevo proyecto llamado "CargaDatos" con un nombre de paquete válido y especificaremos la versión mínima de Android que soportará nuestra aplicación.

El asistente nos ayudará a crear la primera Actividad llamada "CargaActivity", que tendrá asociado un archivo de diseño llamado "activity_carga.xml". Esta actividad se encargará de mostrar un TextView con el progreso de la carga, utilizando una clase AsyncTask.

En total, implementaremos dos Activities y dos archivos de diseño XML:

  • CargaActivity.java
  • MainActivity.java
  • activity_carga.xml
  • activity_main.xml

Para declarar las actividades en el archivo AndroidManifest.xml, se debe agregar el siguiente código:

1<manifest package="com.example.cargadatos" android:versionCode="1" android:versionName="1.0"> 2 <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> 3 <application android:icon="@drawable/logoimaginaformacion" android:label="@string/app_name" android:theme="@style/AppTheme"> 4 <activity android:name=".CargaActivity" android:label="@string/title_activity_carga"> 5 <intent-filter> 6 <action android:name="android.intent.action.MAIN" /> 7 <category android:name="android.intent.category.LAUNCHER" /> 8 </intent-filter> 9 </activity> 10 <activity android:name=".MainActivity" android:label="@string/title_activity_main" /> 11 </application> 12</manifest>

Actualización de recursos

Abre el archivo string.xml ubicado en res/values/string.xml y modifícalo de la siguiente manera:

1<resources> 2 <string name="app_name">CargaDatos</string> 3 <string name="menu_settings">CargaDatos</string> 4 <string name="title_activity_carga">CargaActivity</string> 5 <string name="title_activity_main">MainActivity</string> 6 <string name="saludo">Bienvenido</string> 7</resources>

Ahora vamos a definir los archivos visuales. Podremos ver el logotipo de Imagina Group en el centro de la actividad, seguido de un TextView y una ProgressBar.

Descarga la imagen y renómbrala como logoimaginaformacion.png, luego guárdala en la carpeta drawable-mdpi.

activity_carga.xml

1<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:paddingLeft="@dimen/activity_horizontal_margin" 6 android:paddingTop="@dimen/activity_vertical_margin" 7 android:paddingRight="@dimen/activity_horizontal_margin" 8 android:paddingBottom="@dimen/activity_vertical_margin" 9 tools:context=".CargaActivity"> 10 11 <ImageView 12 android:layout_width="wrap_content" 13 android 14 15:layout_height="wrap_content" 16 android:layout_centerInParent="true" 17 android:src="@drawable/logoimaginaformacion" /> 18 19 <TextView 20 android:id="@+id/loadText" 21 android:layout_width="wrap_content" 22 android:layout_height="wrap_content" 23 android:layout_below="@id/logo" 24 android:layout_centerHorizontal="true" 25 android:textSize="20sp" 26 android:textColor="@android:color/black" /> 27 28 <ProgressBar 29 android:id="@+id/progressBar1" 30 style="?android:attr/progressBarStyleHorizontal" 31 android:layout_width="match_parent" 32 android:layout_height="wrap_content" 33 android:layout_below="@id/loadText" 34 android:layout_marginTop="16dp" 35 android:max="100" 36 android:progress="0" /> 37 38</RelativeLayout>
Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *

Implementación de las actividades

La actividad CargaActivity es más compleja debido al uso de AsyncTask.

CargaActivity.java

1package com.example.cargadatos; 2 3import android.app.Activity; 4import android.content.Context; 5import android.content.Intent; 6import android.graphics.Color; 7import android.os.AsyncTask; 8import android.os.Bundle; 9import android.widget.ProgressBar; 10import android.widget.TextView; 11 12public class CargaActivity extends Activity { 13 TextView loadText; 14 ProgressBar progressBar; 15 16 @Override 17 public void onCreate(Bundle savedInstanceState) { 18 super.onCreate(savedInstanceState); 19 setContentView(R.layout.activity_carga); 20 21 loadText = (TextView) findViewById(R.id.loadText); 22 progressBar = (ProgressBar) findViewById(R.id.progressBar1); 23 24 progressBar.setMax(100); 25 progressBar.setBackgroundColor(Color.GRAY); 26 progressBar.setProgress(0); 27 28 AsyncTaskCargaDatos ATCargaDatos = new AsyncTaskCargaDatos(this); 29 ATCargaDatos.execute(); 30 } 31 32 // AsyncTask para la carga de datos 33 public class AsyncTaskCargaDatos extends AsyncTask<Void, Integer, Void> { 34 Context mContext; 35 36 AsyncTaskCargaDatos(Context context) { 37 mContext = context; 38 } 39 40 @Override 41 protected Void doInBackground(Void... params) { 42 publishProgress(0); 43 44 for (int i = 0; i < 100; i++) { 45 try { 46 Thread.sleep(50); 47 publishProgress(i + 1); 48 } catch (InterruptedException e) { 49 e.printStackTrace(); 50 } 51 } 52 53 return null; 54 } 55 56 @Override 57 protected void onProgressUpdate(Integer... value) { 58 loadText.setText(value[0] + " %"); 59 progressBar.setProgress(value[0]); 60 } 61 62 @Override 63 protected void onPostExecute(Void result) { 64 mContext.startActivity(new Intent(mContext, MainActivity.class)); 65 finish(); 66 } 67 } 68}

La clase AsyncTask permite ejecutar procesos en segundo plano mientras la actividad sigue funcionando normalmente. AsyncTask está diseñada para actualizar las interfaces de las Activities y se compone de una serie de hilos que tienen acceso a los métodos y objetos de la Activity que lo invoca.

Al implementar esta clase, se pueden sobrescribir cuatro métodos que se comunican entre sí:

  • onPreExecute(): Este método se ejecuta antes de doInBackground(). El valor devuelto será recibido por doInBackground().
  • doInBackground(): Aquí se realiza el trabajo "pesado" de la carga. Se puede analizar un archivo XML, cargar gráficos en la memoria para un juego, descargar la información necesaria del servidor, etc. El valor devuelto será recibido por onPostExecute().
  • onProgressUpdate(): Este método se encarga de actualizar la interfaz de la actividad mientras `do

InBackground()sigue cargando. Se ejecuta cada vez quedoInBackground()llama al métodopublishProgress(param)`.

  • onPostExecute(): Se ejecuta al finalizar la tarea en segundo plano. Aquí se puede realizar alguna acción adicional o abrir otra actividad, como en este ejemplo.

Una vez que todo esté preparado, puedes ejecutar la aplicación y observar cómo el ProgressBar se incrementa mientras se actualiza el TextView con el progreso de la carga.

Aprende a programar en Android

En este tutorial, aprendimos cómo configurar una carga de datos con actualización de interfaz en Android utilizando la clase AsyncTask. Esto nos permite realizar tareas en segundo plano de manera eficiente y mantener a los usuarios informados sobre el progreso de la carga.

Si estás interesado en aprender más sobre programación en Android y desarrollar habilidades sólidas en el desarrollo de aplicaciones móviles, te recomiendo nuestro curso de programación en Android. Aprenderás los conceptos fundamentales y las mejores prácticas para crear aplicaciones Android de alta calidad.

¡No dudes en explorar y aprovechar al máximo el curso para llevar tus habilidades de desarrollo de Android al siguiente nivel!

Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *
iconClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClient