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 版权协议,转载请附上原文出处链接和本声明。