首页 > 解决方案 > Android:在网络响应上加载 Oncreate 布局

问题描述

我的用例需要加载布局 setcontentview,这取决于网络请求和它收到的响应,我必须在网络响应上加载视图。例如。*我有老师布局和学生布局。决策来自网络。现在我面临的问题是当我进行网络调用时,它在一个单独的线程上运行,当我将消息发送回 uithread 并启动布局的 setcontentview 时,取决于它不起作用的响应。任何方向或帮助都会很棒,在此先感谢。

标签: android

解决方案


您可以使用 LiveData 解决此问题。在单独的线程中进行服务器调用。创建视图后,显示加载器并在不同的线程中进行服务器调用(不要在主线程上进行网络调用)。进行服务器调用后,开始观察结果,当您收到响应时,使用实时数据发布响应值并显示结果并隐藏您的加载器。以下是您的虚拟代码:

// 初始化可变的实时数据

private MutableLiveData<Response> networkCallResult = new MutableLiveData<>();

// 用这个获取可变的实时数据结果

public LiveData<Result> getNetworkCallResult() {
        return networkCallResult;
    }

在您进行网络调用的活动或片段中,调用此方法 getNetworkCallResult() 并使用以下方法观察结果:

getNetworkCallResult().observe(this, s -> {
// perform the action here.
});

收到结果时如何在实时数据中发布值?这里是。

networkCallResult.postValue(response);

希望这可以帮助。


推荐阅读