Saat ini saya mencoba meningkatkan leverage kotlin lebih banyak. Tapi saya menghadapi masalah: ketika menggunakan moshi atau okhttp di dalam coroutine ini saya mendapat peringatan:
"panggilan metode pemblokiran yang tidak pantas"
Apa cara terbaik untuk memperbaikinya? Aku benar-benar tidak ingin menjadi tidak pantas ;-)
Jawaban:
Peringatannya adalah tentang metode yang memblokir utas dan coroutine saat ini tidak dapat ditangguhkan dengan benar. Dengan cara ini, Anda kehilangan semua manfaat coroutine dan downgrade ke satu pekerjaan per utas lagi.
Setiap kasus harus ditangani dengan cara yang berbeda. Untuk panggilan http yang dapat ditangguhkan, Anda dapat menggunakan klien http ktor . Tetapi kadang-kadang tidak ada perpustakaan untuk kasus Anda, jadi Anda bisa menulis solusi sendiri atau mengabaikan peringatan ini.
sumber
withContext(Dispatchers.IO)
.withContext(Dispatchers.IO)
maka tidak lagi memblokir dan peringatannya tidak benar, bukan?Anda juga mendapatkan peringatan ini saat memanggil fungsi menangguhkan yang dijelaskan dengan
@Throws(IOException::class)
(Kotlin 1.3.61). Tidak yakin apakah itu dimaksudkan atau tidak. Bagaimanapun, Anda dapat memperbaiki peringatan ini dengan menghapus anotasi itu atau mengubahnya keException
kelas.sumber