Mengenal Apa Itu Kotlin Coroutines Dan Bagaimana ALODOKTER Mengimplementasikannya | Autor: Bambang Harianto Sianturi | Junio de 2021
Coroutine merupakan salah satu fitur unggulan pada Kotlin yang diperkenalkan pada Kotlin versi 1.1. Coroutine adalah cara baru untuk menulis kode asincrónico dan sin bloqueo atau bisa juga dikatakan sebagai cara untuk mengatasi masalah concurrente programación asincrónica atau (sederhananya adalah mengubah pemanggilan código asincrónico menjadi seperti código sincrónico). Sederhananya, coroutine memungkinkan kita membuat programa asincrónico dengan cara yang sangat lancar, función de suspensión menggunakan. Fungsi ini dapat menghentikan eksekusi saat dipanggil dan membuatnya berlanjut setelah selesai menjalankan tugasnya sentiri.
Berikut contoh penerapan coroutine código pada proyecto ALODOKTER:
Lalu, apakah coroutine sama dengan thread? Jabania Adara Tidak.
septiembreToneladai yang sudah teman – teman ketahui sebelumnya walaupun coroutine dan thread bekerja dengan cara yang sama, coroutine jauh lebih ringan dan efisien. Anda bisa memiliki jutaan coroutine yang berjalan pada beberapa hilo. Jika dibandingkan dengan thread, el programa colaborativo tidak hanya mudah diterapkan, melainkan juga jauh lebih son poderosos. Kelebihan tersebut terutama berlaku pada lingkungan móvil seperti android, di mana setiap ms kenaikan kinerja sangat diperhitungkan. Selain itu, perbedaan lainnya adalah coroutine dikelola oleh pengguna, hilo sedangkan dikelola oleh system opera.
Berikut adalah sebuah pernyataan dalam dokumentasi resmi kotlin:
«Puedes pensar en las corrutinas como subprocesos livianos. Al igual que los subprocesos, las corrutinas pueden ejecutarse en paralelo, esperar unas a otras y comunicarse. La mayor diferencia es que las corrutinas son muy baratas y casi gratuitas; podemos crear miles de ellas, y en términos de rendimiento El precio que se paga es pequeño. Por otro lado, el costo real de inicio y retención de subprocesos es muy alto. Para las máquinas modernas, mil subprocesos pueden ser un desafío serio «.
Dari pernyataan diatas dapat diartikan bahwa coroutine sebagai hilo yang ringan bobotnya. Seperti thread, coroutine bisa berjalan paralel, menunggu satu sama lain, dan berkomunikasi. Perbedaan terbesar adalah bahwa co-proceso sangatlah ringan. Coprocesamiento del membuat ribuan del norte de Pisa dengan sangat Muda. (Sementara itu), Hilo pada umumnya tergolong berat untuk memulai dan memeliharanya. Hilo ribuan bisa menjadi tantangan serius bagi mesin modern saat ini.
Pernyataan dari situs resmi Kotlin tersebut mendeskripsikan bagaimana keunggulan dari coroutines itu sendiri. Lebih lanjut, Kotlin juga telah menyediakan banyak sintaks yang dapat mempermudah kita dalam menggunakannya.
Saat ini coroutine telah mencapai versi 1.3 yang dimana JetBrains selaku tim pengembang berkomitmen untuk mempertahankan retrocompatibilidad untuk tiap perubahan yang akan di rilis kedepannya.
Proyecto Contoh Menerapkan Kotlin Pada
Bersamaan dengan artículo ini dibuat coroutine telah mencapai versi stabil yaitu 1.3 dengan fundasi yang lebih kuat untuk mengelola trabajos asíncronos pada skala apa pun termasuk combinación, cancelación, manejo de excepciones dan penggunaan UI yang lebih spesifik. Untuk bisa menerapkan coroutine ke dalam proyek Android Studio y bisa langsung menambahkan dependencia berikut pada build.gradle.
La corrutina memiliki 2 (dua) fungsi utama yaitu fungsi comienza dan async . Kedua fungsi tersebut memungkinkan kita untuk melakukan Prose no está sincronizado. Fungsi lanzó tidak mengembalikan nilai apapun. Sementara fungsi async akan mengembalikan sebuah instancia dari Diferido, yang memiliki fungsi aguardar () untuk mengembalikan hasil coroutine. Berikut adalah contoh penggunaan fungsi lanzado :
Kita telah menggunakan fungsi lanzado untuk memulai coroutine baru yang mengembalikan sebuah job atau proses yang berjalan di background tanpa menghasilkan nilai apapun. Perlu diperhatikan bahwa dalam program berbasis coroutine masih terdapat thread. Sebuah thread saja kita bisa menjalankan banyak coroutine. Alhasil, kita tidak perlu membutuhkan banyak thread. Jika Anda menjalankan kode di atas, maka konsol akan menampilkan teks «¡Hola Bams Coroutine!» setelah 5 (Lima) detik. Fungsi delay () pada contoh kode di atas merupakan sebuah pause function, yang bisa menghentikan sebuah eksekusi ketika ia dipanggil dan melanjutkan eksekusi ketika tugasnya sudah selesai.
Perlu diingat bahwa función de suspensión hanya bisa dipanggil dari sebuah coroutine atau función de suspensión lainnya. Kita juga bisa membuat función de pausa dengan memanfaatkan modificador pause seperti contoh berikut:
Selanjutnya, kita akan mencoba membuat contoh untuk fungsi async . Se libera Fungsi ini tidak jauh berbeda dengan fungsi . Hanya saja fungsi ini akan mengembalikan sebuah tangguhan atau diferido yang nantinya akan memberikan sebuah hasil dari asociación. Kita bisa mendapatkan hasil dari tangguhan tersebut dengan menggunakan fungsi await (). Kita juga bisa membatalkan tangguhan saat ia masih berjalan. Sebagai contoh, kita akan membuat 2 (dua) función de pausa seperti berikut ini:
Dan kemudian kita dapat menjalankan kedua Función de pausa di atas dengan menggunakan fungsi async serta setelah dijalankan, kita bisa mengambil hasilnya menggunakan fungsi await (), contoh seperti berikut ini:
Los hongos esperan () di atas juga merupakan sebuah Función de pausaItulah sebabnya ia juga harus dipanggil dari fungsi async . Selanjutnya, untuk membatalkan sebuah tangguhan saat ia masih berjalan kita bisa menggunakan fungsi cancel () seperti berikut:
Fungsi isActive () di atas merupakan sebuah fungsi untuk mengetahui apakah sebuah tangguhan masih berjalan. Untuk tahu apa sebuah tangguhan sudah selesai (atau belum), kita bisa menjalankan fungsi está completado () seperti berikut:
Dari segi penerapan, tidak terdapat perbedaan yang signifikan antara Coroutine versi eksperimental sebelumnya dengan versi stabil. Hanya saja y jika sebelumnya fungsi lanzaron dan async bisa langsung diakses, sekaraang fungsi tersebut hanya bisa diakses melalui GlobalScope.
Untuk menjalankan coroutine dibutuhkan Coroutine Scope dan pada contoh diatas saya menggunakan GlobalScope yang berarti ciclo de vida coroutinenya mengikuti ciclo de vida seluruh aplikasi.
Mungkin demikian sedikit pengenalan kotlin coproceso serta penerapannya pada proyecto yang akan kita buat. Mungkin bila ada waktu kita akan membahas lebih lanjut tentang cara menggunakan coroutine dengan lebih praktis !. Untuk kelengkapan código dapat dilihat pada github saya: https://github.com/bambanghariantosianturi
Materiales de referencia:
https://kotlinlang.org/docs/reference/coroutines-overview.html
https://medium.com/androiddevelopers/coroutines-on-android-part-ii-getting-started-3bff117176dd
https://developer.android.com/kotlin/coroutines
Codificación KADE (Kotlin Android Developer Expert)