我有一个数据(例如200个帖子),并希望快速加载,以便用户每次进入此屏幕时都不会看到进度/预加载器。这就是我在做的事情:
如果用户是第一次打开屏幕,请获取前8个帖子,存储它们(我将JSON作为字符串存储到SharedPreferences中),当用户开始滚动并到达第7个帖子时我正在使用分页(获取新的8个帖子并附加它们)等等。 此案例工作正常。
如果用户已经使用此scree,我会从SharedPreferences加载前8个帖子,这样他就可以立即看到一些结果而无需开始获取新结果。当他到达底部时 - 再次分页。问题是,当在底部标签栏的项目之间进行点击时,会有1秒延迟打开带有存储数据的标签。当你多次这样做时,它真的很烦人。这就是我正在做的事情:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (isFirstTime) {
getFirstEight();
progress.show();
} else {
JSONObject data = getStoredJSONFromShared();
if (data != null) {
Post[] posts = gson.fromJson(data.getJSONObject("response").get("posts").toString(), Post[].class);
}
}
}
我在onCreateView中创建了这个,因为当用户第一次没有看到屏幕时,来自SharedPreferences的数据会在RecycleView init之前加载。也许解析很慢或者我不应该在onCreateView中创建它。
答案 0 :(得分:0)
即使您从SharedPrefrences获取数据,当您向用户显示屏幕时,您可以执行的是显示预加载器。
在onResume方法中加载数据,加载数据后,可以隐藏预加载器。这样,至少,用户将获得视觉反馈,因为您没有在onCreateView中加载任何内容,所以不会有1秒的延迟。