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