Showing posts with label 【ANDROID STUDIO】Structured Concurrency. Show all posts
Showing posts with label 【ANDROID STUDIO】Structured Concurrency. Show all posts

Monday, May 31, 2021

【ANDROID STUDIO】Structured Concurrency

 package com.example.coroutine


import kotlinx.coroutines.*

class UserDataManager1 {
//structure
var count = 0
lateinit var deferred : Deferred<Int>
suspend fun getTotalUserCount():Int {

coroutineScope {
launch(Dispatchers.IO) {
delay(1000)
count = 50
}

deferred = async(Dispatchers.IO) {
delay(3000) //create a delay
return@async 70
}

}
return count + deferred.await() // 120
}

}
package com.example.coroutine

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.Main).launch {
tvUserMessage.text = UserDataManager1().getTotalUserCount().toString()
}


}
}


}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_gravity="center_vertical"
tools:context=".MainActivity">

<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tvUserMessage"
android:textSize="20sp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
/>

<Button android:text="@string/download_user_data"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnDownloadUserData"
android:layout_marginBottom="68dp"
android:textSize="24sp"
android:background="@color/colorPrimaryDark"
android:textColor="@android:color/white"
android:padding="15dp"
android:layout_marginTop="10dp"
android:layout_gravity="center_horizontal"
/>

<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tvCount"
android:textSize="20sp"
tools:text="Count"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
/>

<Button android:text="@string/click_here"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnCount"
android:background="@color/colorPrimaryDark"

android:textSize="24sp"
android:textColor="@android:color/white"
android:padding="15dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
/>

</LinearLayout>

How to Launch a D2C Startup?

Discover why successful D2C startups validate identity before building products and how paid pilots can prove demand before an MVP exists...