带有Dispatcher通信的RunBlocking不起作用

问题描述 投票:0回答:1

我已将上下文切换为Dispatcher.Main以显示UI,但在runBlocking上获取了数据,但无法在RecylerView中显示]

runBlocking {
            var fruits = fetchFruitList()
            withContext(Dispatchers.Main){
                recyclerView.adapter = FruitAdapter(fruits);
            }
        }

我在做什么错,将数据从一个Dispatcher返回到另一个Dispatcher的适当方法是什么?

我尝试了另一种方法

GlobalScope.launch {
            withContext(Dispatchers.IO){
                var fruits = arrayOf("Grapes","Apple","Mango","TuttiFruit","PineApple",
                        "Pomegrante","Apple","Mango","TuttiFruit","PineApple",
                        "Pomegrante","Apple","Mango","TuttiFruit","PineApple").toList()
                return@withContext
            }
            recyclerView.adapter = FruitAdapter(fruits)
        }

但以上述方式I have to declare fruits as global,而我不想让它全局工作。有没有一种方法可以将数据从一个“调度程序队列”返回到另一个队列

我必须从Api中获取数据(IO操作)并在RecyclerView(主线程操作)中显示该数据

<<

这是因为您必须在获取数据后切换上下文:

android kotlin dispatcher kotlin-coroutines
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.