如何延迟第二个片段直到第一个片段在 ViewPager 中加载数据?
How to delay second fragment until the first loads the data in ViewPager?
我有 2 个片段 pager.They 同时开始发出网络请求 time.I 想通过延迟第二个片段来加速第一个片段,直到第一个片段加载 data.How 可以我这样做吗?我在 java.
编码
编辑:
当两个片段加载数据时,与我仅使用第一个片段(测试时)发出网络请求时相比,完成加载第一个片段需要额外的 2 秒,因为视图寻呼机同时加载两个选项卡。
编辑2:
在以下位置发现了相同的问题:link
一个答案建议为第一个片段创建界面。
interface TabView {
fun prepareTab()
fun onTabOpened()
fun onTabClosed()
}
问题是我无法使用界面,因为我的第一个选项卡使用我在此处找到的示例中的根片段:link
Edit3:我在第二个片段中的网络请求:Implementation of network bound resource
快速修复:我在第二次使用 runnable 来延迟观察者的注册fragment.Im肯定有更好的解决方案,所以我不会接受这个。
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
registerLiveDataObservers();
}
}, 2000); //delay for 2 seconds
我使用实时数据作为改造响应,因此它与 db+network 配合得很好
接口的替代方法是用于片段之间通信的共享视图模型(还有其他方法),例如参见 [=12=]。
然后你会在 Fragment1 的 LiveData 观察者的 onChanged
中的共享视图模型中设置一个标志,然后在 Fragment2 中观察共享视图模型中的这个标志并且不会 registerLiveDataObservers();
直到正确的状态说 Fragment1 已加载它的数据(数据大小 > 0)
我有 2 个片段 pager.They 同时开始发出网络请求 time.I 想通过延迟第二个片段来加速第一个片段,直到第一个片段加载 data.How 可以我这样做吗?我在 java.
编码编辑: 当两个片段加载数据时,与我仅使用第一个片段(测试时)发出网络请求时相比,完成加载第一个片段需要额外的 2 秒,因为视图寻呼机同时加载两个选项卡。
编辑2: 在以下位置发现了相同的问题:link 一个答案建议为第一个片段创建界面。
interface TabView {
fun prepareTab()
fun onTabOpened()
fun onTabClosed()
}
问题是我无法使用界面,因为我的第一个选项卡使用我在此处找到的示例中的根片段:link
Edit3:我在第二个片段中的网络请求:Implementation of network bound resource
快速修复:我在第二次使用 runnable 来延迟观察者的注册fragment.Im肯定有更好的解决方案,所以我不会接受这个。
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
registerLiveDataObservers();
}
}, 2000); //delay for 2 seconds
我使用实时数据作为改造响应,因此它与 db+network 配合得很好
接口的替代方法是用于片段之间通信的共享视图模型(还有其他方法),例如参见 [=12=]。
然后你会在 Fragment1 的 LiveData 观察者的 onChanged
中的共享视图模型中设置一个标志,然后在 Fragment2 中观察共享视图模型中的这个标志并且不会 registerLiveDataObservers();
直到正确的状态说 Fragment1 已加载它的数据(数据大小 > 0)