본문 바로가기
안드로이드/Coroutine

안드로이드 코루틴 실행중인 Scope 변경

by 김어찐 2022. 11. 25.
728x90

withContext로 변경한다

withContext사용시 외부 변수 사용 불가능

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext


class MainActivity : AppCompatActivity() {
    private var count = 0

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        btnCount.setOnClickListener {
            tvCount.text = count++.toString()
        }
        btnDownloadUserData.setOnClickListener {

            CoroutineScope(Dispatchers.IO).launch {
                downloadUserData()
            }
        }
    }

    private suspend fun downloadUserData() {
        
        withContext(Dispatchers.Main){
            for (i in 1..200000) {
                tvUserMessage.text =  "Downloading user $i in ${Thread.currentThread().name}"
            }
        }
    }
}
728x90