如何解决提取数据时进行慢速json解析
我正在使用wordpress的REST API来获取数据,而我一次只能使用volley来获取10条帖子。
当我在浏览器中请求API时,它会在6-7秒内为我提供结果...
但是我的应用需要15秒钟以上才能显示10条帖子。
有时需要超过1分钟才能显示数据。
我什至添加了一个参数,使每页仅获得2条帖子。但是响应时间是相同的。
这是代码:-
private void jsonrequest(int pageNo) {
JSON_URL = "https://jamuitoday.com/wp-json/wp/v2/posts?_embed&page=" + pageNo;
JsonArrayRequest request = new JsonArrayRequest(JSON_URL,response -> {
JSONObject jsonObject;
for (int i = 0; i < response.length(); i++) {
try {
isLoading = true;
isNewsLoaded = false;
jsonObject = response.getJSONObject(i);
News news = new News();
//Get News Link
String link = jsonObject.getString("link");
news.setLink(link);
//Set Date
String date = jsonObject.getString("date");
String d = date.substring(0,10);
int time = Integer.parseInt(date.substring(11,13));
if (time > 12) {
String ti = date.substring(13,16);
String dt = d + " " + (time - 12) + ti + " PM";
news.setdate(dt);
} else {
String ti = date.substring(11,16);
String dt = d + " " + ti + " AM";
news.setdate(dt);
}
//Set Title
JSONObject title = jsonObject.getJSONObject("title");
String titleren = title.getString("rendered");
news.setName(titleren);
//Set Description
SpannableString content = new SpannableString("Content");
content.setSpan(new Underlinespan(),content.length(),0);
JSONObject desc = jsonObject.getJSONObject("content");
String descSub = desc.getString("rendered");
news.setDescription(String.valueOf(Html.fromHtml((descSub))));
news.setAdimgurl(descSub);
// Set Image
JSONObject img = new JSONObject(jsonObject.getString("_embedded"));
JSONArray ttt = img.getJSONArray("wp:featuredmedia");
String s = "";
for (int t = 0; t < ttt.length(); t++) {
JSONObject obj = ttt.getJSONObject(t);
s = obj.getString("source_url");
}
news.setimage_url(s);
listNews.add(news);
} catch (JSONException e) {
e.printstacktrace();
}
}
setuprecyclerview(listNews);
isLoading = false;
isNewsLoaded = true;
pageNumber += 1;
if (recyclerView.getLayoutManager() != null) {
recyclerView.getLayoutManager().scrollToPosition(currentListPosition);
}
if (shimmerFrameLayout.isShimmerVisible()) {
shimmerFrameLayout.stopShimmer();
shimmerFrameLayout.setVisibility(View.GONE);
}
if (swipyRefreshLayout.isRefreshing()) {
swipyRefreshLayout.setRefreshing(false);
}
},error -> {
});
RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
requestQueue.add(request);
}
有什么可以加快速度的黑客吗?
我将实现sqlite来存储数据并在应用启动时显示。因此,用户无法感觉到加载时间。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。