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
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
- QuoteList
- 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