正确使用服务进行网络通信的方法

问题描述

我有MainActivity和MyService类。在服务中,我与服务器连接,但是我还需要更新一些需要MainActivity提供上下文的UI。更准确地说,我需要使用layoutInflater,然后更新视图。是否应该单独进行? 一个功能的例子

 private suspend fun setStations(serverText: String) {
    withContext(Main) {
        for (i in (1..numStations(serverText)))
        {
            frame = ScrollView( ) //would need context here
            layoutInflater.inflate(R.layout.frame_layout,frame) 
            .
            .
            .

解决方法

通常,这种关系由体系结构模式(模型视图演示者)组织。您应该向演示者中的服务器发出请求,然后参考“活动”。这可能对您有帮助https://github.com/Arello-Mobile/Moxy

,

通常,您可能希望将业务逻辑和UI问题尽可能地分开,以使代码更具可读性和可测试性。为此,您可以根据应用程序的需求和复杂性遵循MVP,MVVM或MVI等架构模式。

因此,在您的情况下,您可能会在活动中设置一个回调设置,即在服务完成执行其代码时调用该调用。

作为参考,这里有一些不错的阅读材料:

此外,这是一个使用MVVM(一种非常常见的体系结构)的示例项目 https://github.com/skydoves/Pokedex