例1
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
import kotlinx.coroutines.*
// 1到100间隔一秒跳动
class MainActivity : AppCompatActivity() {
private val job: Job = SupervisorJob()
private val scope = CoroutineScope(Dispatchers.Main + job)
private lateinit var tv : TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
tv = findViewById(R.id.tv)
scope.launch {
count()
}
}
private suspend fun count() {
for (i in 1..100) {
withContext(Dispatchers.Main) {
tv.text = "$i"
}
delay(1000)
}
}
override fun onDestroy() {
super.onDestroy()
job.cancel()
}
}
例2
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
import kotlinx.coroutines.*
import kotlin.coroutines.CoroutineContext
// 1到100间隔一秒跳动
class MainActivity : AppCompatActivity(), CoroutineScope {
lateinit var job: Job
override val coroutineContext: CoroutineContext
get() = Dispatchers.Main + job
private lateinit var tv :TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
tv = findViewById(R.id.tv)
job = SupervisorJob()
launch {
count()
}
}
private suspend fun count() {
for (i in 1..100) {
withContext(Dispatchers.Main) {
tv.text = "$i"
}
delay(1000)
}
}
override fun onDestroy() {
super.onDestroy()
job.cancel()
}
}