Async Programming
Handlers & ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π²Π½Π΅ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°
import kotlinx.coroutines.*
class MainActivity : AppCompatActivity {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
my_button.setOnClickListener {
val handler = Handler() // ΡΡΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ
// Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠΎΠ΄ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ΅Π΄Π° Π² Π³Π»Π°Π²Π½ΠΎΠΌ (Π½Π°ΠΏΡΡΠΌΡΡ ΡΠ°ΠΊ Π΄Π΅Π»Π°ΡΡ Π½Π΅Π»ΡΠ·Ρ)
// Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π²ΠΎ Π²ΡΡΡ
Π΅
// ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ
Thread(Runnable {
val test = 123
/*
doSomething()
*/
// ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΡΠΎ-ΡΠΎ Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΡΡΠ΅Π΄Π΅
handler.post(Runnable {
outputView.text = "my text and $test"
})
}).start()
}
}
}
Async/Await
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅: https://habr.com/ru/post/314656/
ΠΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
fun fun1() = async<String> {
val user = await(repo.getUser())
user.username
}
ΠΡΠ΅ ΡΡΡΠ»ΠΊΠΈ: https://medium.com/@nhaarman/a-dive-into-async-await-on-android-5a6699029aa3 https://medium.com/@jitesh313/network-calls-kotlin-coroutine-retrofit-2-e058ebc56189
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠΎΠ±ΡΡΠΈΠΉ
TimerTask
Coroutines
Π‘ΡΡΠ»ΠΊΠΈ: https://android.jlelse.eu/kotlin-coroutines-and-retrofit-e0702d0b8e8f
Π app/build.gradle:
// Kotlin & Coroutines
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
Π ΠΊΠΎΠ΄Π΅
Thread(Runnable{
// your code in background thread
}).start()
Last updated