首页 > 解决方案 > 如何延迟第二个片段,直到第一个在 ViewPager 中加载数据?

问题描述

我在视图寻呼机中有 2 个片段。它们都开始同时发出网络请求。我想通过延迟第二个片段来加速第一个片段,直到第一个片段加载数据。我该怎么做?我在java中编码。

编辑:当两个片段加载数据时,与我仅使用第一个片段(测试时)发出网络请求时相比,完成加载第一个片段需要额外的 2 秒,因为视图寻呼机同时加载两个选项卡。

Edit2:在以下位置找到相同的问题:链接 一个答案建议为第一个片段创建界面。

interface TabView {
fun prepareTab()
fun onTabOpened()
fun onTabClosed()
 }    

问题是我不能使用接口,因为我的第一个选项卡使用了我在这里找到的示例中的根片段: link

Edit3:我在第二个片段中的网络请求:网络绑定资源的实现

标签: androidperformanceandroid-fragmentsandroid-viewpager

解决方案


接口的替代方案是用于在片段之间进行通信的共享视图模型(还有其他方法),例如参见androidwave.com/fragment-communication-using-viewmodel 。

然后你会在onChangedFragment1 的 LiveData 观察者的共享视图模型中设置一个标志,然后在 Fragment2 中观察共享视图模型中的这个标志,registerLiveDataObservers();直到处于正确状态才能说 Fragment1 已加载它的数据(数据有大小> 0 )


推荐阅读