【发布时间】:2025-12-09 19:55:01
【问题描述】:
我们知道 Android viewPager 有一个 setOffscreenPageLimit 方法来确定应该预先创建和保留的不可见页面的数量。
我有一个测验应用程序,它通过 API 调用加载 10 个问题。
if(response.code() == HttpURLConnection.HTTP_OK){
data = response.body();
fragments = new ArrayList<>();
for (int t = 0; t < response.body().getData().getMcqs().size(); t++) {
ExerciseQuizFragment practiceQuizFragment = QuizFragment.newInstance(t, null);
fragments.add(practiceQuizFragment);
}
loadViewPagerAndViews();
}
在玩测验时,用户可以跳过问题或提交答案并在同一屏幕上获得结果。每个测验还有一个“上一个”按钮,用户可以查看他之前对该问题的统计信息(用户回答是否正确/错误/跳过),因为我像这样使用 setOffscreenPageLimit,所以该按钮被保留。
private void loadViewPagerAndViews() {
binding.pager.setAdapter(new PagerAdapter(getSupportFragmentManager(), getLifecycle()));
binding.pager.setUserInputEnabled(false);
binding.pager.setOffscreenPageLimit(data.getData().getMcqs().size());
}
测验视图如下所示:
问题是因为我 setOffscreenPageLimit 等于测验长度。第一次加载测验视图时加载速度太慢。如果我使用默认的 setOffscreenPageLimit,它的加载速度会更快,但在这种情况下,用户设备会离开屏幕,所有以前的用户都保留了丢失的统计信息,这可以通过测验视图的上一个按钮获得。
如果我使用默认的 setOffscreenPageLimit 而不是测验大小,我如何保留保留的用户统计页面?还有什么方法可以让我使用测验大小 setOffscreenPageLimit 更快地加载?
【问题讨论】:
标签: java android android-viewpager