728x90
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
apiInit1()
Log.d("crt","foodShopInfoList.size : ${foodShopInfoList.size}")
Log.d("crt","drinkShopInfoList.size : ${drinkShopInfoList.size}")
Log.d("crt","nowFoodId : ${nowFoodId}")
Log.d("crt","nowDrinkId: ${nowDrinkId}")
apiInit2()
Log.d("crt","foodShopDetailInfoList.size : ${foodShopDetailInfoList.size}")
Log.d("crt","drinkShopInfoList.size : ${drinkShopDetailInfoList.size}")
}
fun apiInit1() {
val job1 = GlobalScope.launch(Dispatchers.Default) {
getDrinkSnackList().await()
}
val job2 = GlobalScope.launch(Dispatchers.Default) {
getFoodSnackList().await()
}
val job3 = GlobalScope.launch(Dispatchers.Default){
getNowSnackType().await()
}
runBlocking {
job1.join()
job2.join()
job3.join()
}
}
fun getFoodSnackList() :Deferred<Unit> {
foodShopInfoList.clear()
val result = CoroutineScope(Dispatchers.Default).async {
val client = OkHttpClient()
val foodUrl = "${ServerInfo.SERVER_URL}/api/shop/FOOD"
val foodRequest = Request.Builder().url(foodUrl).build()
val foodResponse = client.newCall(foodRequest).execute()
if (foodResponse.isSuccessful) {
val resultText = foodResponse.body?.string()!!.trim()
Log.d("test", resultText.toString())
val root = JSONObject(resultText)
val data = root.getJSONArray("data")
for (i in 0 until data.length()) {
val shopData = data.getJSONObject(i)
val id = shopData.getInt("id")
val shopName = shopData.getString("shopName")
val menuURI = shopData.getString("menuURI")
val shopInfo = ShopInfo(id, shopName, menuURI)
foodShopInfoList.add(shopInfo)
}
}
return@async
}
return result;
}
}
728x90
'안드로이드 > Coroutine' 카테고리의 다른 글
안드로이드 코루틴 async, await (0) | 2022.11.25 |
---|---|
안드로이드 코루틴 실행중인 Scope 변경 (0) | 2022.11.25 |
안드로이드 Corutine, Retrofit을 활용한 비동기 네트워킹 처리 중 에러 핸들링 (0) | 2022.11.03 |