【问题标题】:Correct way to use Service for network communcation使用Service进行网络通信的正确方法
【发布时间】:2021-01-13 10:13:12
【问题描述】:

我有 MainActivity 和 MyService 类。在服务中,我与服务器连接,但我还需要更新一些 UI,我需要 MainActivity 的上下文。更准确地说,我需要使用 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) 
            .
            .
            .

【问题讨论】:

    标签: android kotlin service android-context


    【解决方案1】:

    通常,这种关系由架构模式(模型视图呈现器)组织。您应该在 Presenter 中向服务器发出请求,然后参考 Activity。这可能会帮助你https://github.com/Arello-Mobile/Moxy

    【讨论】:

      【解决方案2】:

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

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

      作为参考,这里有一些很棒的读物:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多