En este módulo, aprenderemos cómo manejar la comunicación en red y el almacenamiento de datos en aplicaciones Android utilizando Kotlin. Estos son componentes esenciales para cualquier aplicación moderna que necesite interactuar con servicios web y almacenar información de manera persistente.

Contenido

  1. Introducción a la Comunicación en Red
  2. Realizando Solicitudes HTTP
  3. Parseo de Respuestas JSON
  4. Almacenamiento Local con SharedPreferences
  5. Uso de Bases de Datos con Room
  6. Ejercicios Prácticos

  1. Introducción a la Comunicación en Red

La comunicación en red es fundamental para aplicaciones que necesitan interactuar con servicios web. En Android, esto se puede lograr utilizando bibliotecas como Retrofit y OkHttp.

Conceptos Clave

  • HTTP (HyperText Transfer Protocol): Protocolo utilizado para la comunicación entre clientes y servidores.
  • API (Application Programming Interface): Conjunto de reglas que permiten la interacción entre diferentes sistemas de software.

  1. Realizando Solicitudes HTTP

Retrofit es una biblioteca popular para realizar solicitudes HTTP en Android. Facilita la creación de solicitudes y el manejo de respuestas.

Configuración de Retrofit

  1. Agregar Dependencias:

    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
    
  2. Crear una Interfaz de API:

    interface ApiService {
        @GET("posts")
        suspend fun getPosts(): List<Post>
    }
    
  3. Configurar Retrofit:

    val retrofit = Retrofit.Builder()
        .baseUrl("https://jsonplaceholder.typicode.com/")
        .addConverterFactory(GsonConverterFactory.create())
        .build()
    
    val apiService = retrofit.create(ApiService::class.java)
    

Ejemplo Práctico

data class Post(val userId: Int, val id: Int, val title: String, val body: String)

suspend fun fetchPosts() {
    val posts = apiService.getPosts()
    posts.forEach {
        println(it)
    }
}

  1. Parseo de Respuestas JSON

Gson es una biblioteca que facilita la conversión entre JSON y objetos Kotlin.

Ejemplo de Parseo

val json = """
    [
        {"userId": 1, "id": 1, "title": "Post 1", "body": "Content 1"},
        {"userId": 1, "id": 2, "title": "Post 2", "body": "Content 2"}
    ]
"""

val posts: List<Post> = Gson().fromJson(json, object : TypeToken<List<Post>>() {}.type)
posts.forEach {
    println(it)
}

  1. Almacenamiento Local con SharedPreferences

SharedPreferences es una forma sencilla de almacenar datos clave-valor.

Uso de SharedPreferences

val sharedPreferences = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE)
val editor = sharedPreferences.edit()

// Guardar datos
editor.putString("username", "JohnDoe")
editor.apply()

// Recuperar datos
val username = sharedPreferences.getString("username", null)
println(username)

  1. Uso de Bases de Datos con Room

Room es una biblioteca de persistencia que proporciona una capa de abstracción sobre SQLite.

Configuración de Room

  1. Agregar Dependencias:

    implementation "androidx.room:room-runtime:2.3.0"
    kapt "androidx.room:room-compiler:2.3.0"
    
  2. Definir Entidades:

    @Entity
    data class User(
        @PrimaryKey val uid: Int,
        @ColumnInfo(name = "first_name") val firstName: String?,
        @ColumnInfo(name = "last_name") val lastName: String?
    )
    
  3. Crear DAO:

    @Dao
    interface UserDao {
        @Query("SELECT * FROM user")
        fun getAll(): List<User>
    
        @Insert
        fun insertAll(vararg users: User)
    }
    
  4. Configurar la Base de Datos:

    @Database(entities = [User::class], version = 1)
    abstract class AppDatabase : RoomDatabase() {
        abstract fun userDao(): UserDao
    }
    
    val db = Room.databaseBuilder(
        applicationContext,
        AppDatabase::class.java, "database-name"
    ).build()
    

Ejemplo Práctico

val userDao = db.userDao()

// Insertar usuarios
userDao.insertAll(User(1, "John", "Doe"))

// Obtener usuarios
val users = userDao.getAll()
users.forEach {
    println(it)
}

  1. Ejercicios Prácticos

Ejercicio 1: Realizar una Solicitud HTTP

Objetivo: Crear una aplicación que realice una solicitud HTTP para obtener una lista de posts y los muestre en un RecyclerView.

Ejercicio 2: Almacenamiento con SharedPreferences

Objetivo: Crear una pantalla de configuración donde el usuario pueda guardar y recuperar su nombre de usuario utilizando SharedPreferences.

Ejercicio 3: Uso de Room para Almacenamiento de Datos

Objetivo: Crear una aplicación que permita al usuario agregar, listar y eliminar contactos utilizando Room.

Conclusión

En esta sección, hemos aprendido cómo manejar la comunicación en red y el almacenamiento de datos en aplicaciones Android utilizando Kotlin. Estos conocimientos son fundamentales para desarrollar aplicaciones robustas y eficientes. En el próximo módulo, exploraremos las mejores prácticas y temas avanzados para optimizar y asegurar nuestras aplicaciones.

© Copyright 2024. Todos los derechos reservados