2018-07-17 15:28:56 508浏览
今天扣丁学堂给大家整理了一下关于Android培训Kotlin学习教程之协程Coroutine的详细介绍,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
dependencies{
implementation'org.jetbrains.kotlinx:kotlinx-coroutines-core:0.22.5'
implementation"org.jetbrains.kotlinx:kotlinx-coroutines-android:0.19.3"
}
activity_coroutine.xml
<?xmlversion="1.0"encoding="utf-8"?>
<android.support.constraint.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".coroutine.CoroutineActivity">
<TextView
android:id="@+id/tvHello"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</android.support.constraint.ConstraintLayout>
CoroutineActivity.kt
classCoroutineActivity:AppCompatActivity(){
overridefunonCreate(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_coroutine)
setup()
}
funsetup(){
launch(UI){//launchcoroutineinUIcontext
for(iin10downTo1){//countdownfrom10to1
tvHello.text="Countdown$i..."//updatetext
delay(1000)//waithalfasecond
}
tvHello.text="Done!"
}
}
}
classCoroutineActivity:AppCompatActivity(){
lateinitvarjob:Job
overridefunonCreate(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_coroutine)
setup()
}
funsetup(){
job=launch(CommonPool){//launchcoroutineinUIcontext
for(iin10downTo1){//countdownfrom10to1
tvHello.text="Countdown$i..."//updatetext
delay(1000)//waithalfasecond
}
tvHello.text="Done!"
}
}
overridefunonPause(){
super.onPause()
job.cancel()
}
}
launch(UI)
launch(){...}
launch(CommonPool){...}
privatefuncreatePlainPool():ExecutorService{
valthreadId=AtomicInteger()
returnExecutors.newFixedThreadPool(defaultParallelism()){
Thread(it,"CommonPool-worker-${threadId.incrementAndGet()}").apply{isDaemon=true}
}
}
privatefundefaultParallelism()=(Runtime.getRuntime().availableProcessors()-1).coerceAtLeast(1)
【关注微信公众号获取更多学习资料】