我正在使用Android Studio使用Kotlin编写应用程序。
我想打开一个特定的URL来检查其中的值是真还是假(SmartHome Stuff),然后更改应用程序中按钮的颜色。在主线程上执行此操作时,Kotlin会抛出android.os.NetworkOnMainThreadException。
所以我创建了一个新的线程来完成所有的URL操作,它正在工作(直到这里一切都很好)。
问题是,我需要从第二个线程获取值到我的主线程中,以更改按钮颜色。或者将按钮“获取”到第二个线程中,并在那里更改按钮的颜色。
我是一个编程新手,所以我可能不知道解决我的问题的简单方法。
先谢了
2条答案
按热度按时间q8l4jmvw1#
在协程中,我们使用withContext切换到后台线程(Dispatchers.IO)来处理URL请求,然后切换回主线程,使用updateButtonColor函数更新按钮颜色。`import kotlinx.coroutines. *
字符串
o2gm4chl2#
字符串
在这段代码中,flag被声明为volatile。多个线程可以调用toggleFlag()来更改它的值,performAction()使用该标志来决定采用哪个代码路径。使用volatile,我们确保一个线程所做的任何更新都能立即被其他线程看到。这就像使用一个特殊的扩音器,确保每个人都听到最新的消息。