Actualización con Kotlin Coroutine en Android

El equipo de Kotlin define las corrutinas como «subprocesos ligeros». Son una especie de tareas que los subprocesos reales pueden ejecutar. Las rutinas se agregaron a Kotlin en la versión 1.3 y se basan en conceptos establecidos de otros lenguajes. Las rutinas de Kotlin presentan un nuevo estilo de concurrencia que se puede usar en Android para simplificar el código asincrónico. En este artículo, aprenderemos sobre la actualización utilizando la rutina de Kotlin. Por lo tanto, utilizaremos Retrofit para requests de red. Retrofit es una biblioteca muy popular que se usa para trabajar con API y también se usa con mucha frecuencia. Lo aprenderemos haciendo una aplicación simple usando una API para obtener algunos datos usando Retrofit.

Implementación paso a paso

Paso 1: crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio .

Paso 2: Agregar dependencia 

Gradle Scripts > build.gradle(Módulo:aplicación)

// modernizar

implementación ‘com.squareup.retrofit2:retrofit:2.9.0’

// GSON

implementación ‘com.squareup.retrofit2:convertidor-gson:2.9.0’

// rutina

implementación ‘org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2’

implementación ‘org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2’

Estamos usando GSON para convertir JSON a objeto kotlin (Java). Agregaremos estas dependencias en el archivo build.gradle dentro de nuestro proyecto.

Paso 3: Usaremos la siguiente API

https://quotable.io/quotes?page=1

figura 01

Entonces nuestra respuesta JSON se verá como esta Figura01.

Paso 4 : luego crearemos clases de datos de acuerdo con la respuesta JSON

En la respuesta JSON tenemos 2 objetos JSON, por lo que crearemos 2 clases de datos 

  1. QuoteList
  2. Resultados

Kotlin

// data class QuoteList 
// according to JSON response
package com.ayush.retrofitexample
  
data class QuoteList(
    val count: Int,
    val lastItemIndex: Int,
    val page: Int,
    val results: List<Result>,
    val totalCount: Int,
    val totalPages: Int
)

2da clase de datos

Kotlin

package com.ayush.retrofitexample
  
data class Result(
    val _id: String,
    val author: String,
    val authorSlug: String,
    val content: String,
    val dateAdded: String,
    val dateModified: String,
    val length: Int,
    val tags: List<String>
)

Paso 5 : crearemos una interfaz Retrofit para agregar los puntos finales de la URL (las comillas en nuestro caso son el punto final)

Kotlin

// Retrofit interface
package com.ayush.retrofitexample
  
import retrofit2.Response
import retrofit2.http.GET
import retrofit2.http.Query
  
interface QuotesApi {
    @GET("/quotes")
    suspend fun getQuotes() : Response<QuoteList>
}

Paso 6 : Crearemos un nuevo archivo para obtener el objeto Retrofit

En este archivo, tendremos una función que devolverá el objeto Retrofit.

Kotlin

package com.ayush.retrofitexample
  
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
  
object RetrofitHelper {
  
    val baseUrl = "https://quotable.io/"
  
    fun getInstance(): Retrofit {
        return Retrofit.Builder().baseUrl(baseUrl)
            .addConverterFactory(GsonConverterFactory.create()) 
            // we need to add converter factory to 
            // convert JSON object to Java object
            .build()
    }
}

Paso 7 : ahora vincularemos el objeto Retrofit y el archivo de interfaz Retrofit en MainActivity

Kotlin

package com.ayush.retrofitexample
  
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import retrofit2.create
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        val quotesApi = RetrofitHelper.getInstance().create(QuotesApi::class.java)
        // launching a new coroutine
        GlobalScope.launch {
          val result = quotesApi.getQuotes()
            if (result != null)
                // Checking the results
                Log.d("ayush: ", result.body().toString())
        }
  
    }
}

Paso 8 : Agregar permiso de Internet en el archivo de manifiestos

<usos-permiso android:nombre=”android.permiso.INTERNET”></usos-permiso>

Resultados: podemos comprobar la ventana logcat. Podemos ver el resultado en el cuadro verde.

Producción:

Publicación traducida automáticamente

Artículo escrito por ayushpandey3july y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *