import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import kotlinx.coroutines.MainScope import kotlinx.coroutines.launch import org.kotlin2.`interface`.DoSomeThingCallBack import org.kotlin2.bean.Person import org.kotlin2.databinding.ActivityMainBinding import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding private val mainScope = MainScope() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) val view = binding.root setContentView(view) mainScope.launch { Log.i("MainActivity1","[${Thread.currentThread().name}] ") binding.tvName.setText("协程的使用"); var dothing=doSomething() Log.i("MainActivity3",dothing); } Log.i("MainActivity2","[${Thread.currentThread().name}] ") } suspend fun doSomething() = suspendCoroutine<String> { Log.i("MainActivity4","[${Thread.currentThread().name}] ") Person.instance.run("正在跑步",object : DoSomeThingCallBack<String?> { override fun onSuccess(doing:String?) { it.resume(doing!!) } override fun onFailure() { it.resume("不知道在做什么") } }) } }
运行后查看日志,可以看出协程不会阻塞主线程的执行,而且可以执行ui操作。如果是java 就要用线程执行后通知主线程ui更新。
版权声明:本文为qq_40263927原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。