【发布时间】:2016-04-04 09:21:11
【问题描述】:
我正在开发一个应用程序,该应用程序具有其他 API 调用和 4 个使用页面滑动标签条的标签,但我的问题是当我从左到右移动标签时,显示页面为时已晚,并且持续了 5 到 8 秒,为什么?在这里我使用片段。我的应用就像什么应用一样。
提前致谢。`
class GetTasks extends AsyncTask<String, Void, String> {
protected void onPreExecute() {
progressBar.setVisibility(View.VISIBLE);
}
protected void onPostExecute(String response) {
progressBar.setVisibility(View.GONE);
if (response != null && response.length() > 0) {
try {
JSONArray jsonArray = new JSONArray(response);
if (jsonArray != null && jsonArray.length() > 0) {
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObj = jsonArray.getJSONObject(i);
Gson gson = new Gson();
Task task = gson.fromJson(jsonObj.toString(),Task.class);
tasklist.add(task);
}
}else{
nodata.setVisibility(View.VISIBLE);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
nodata.setVisibility(View.VISIBLE);
}
Collections.reverse(tasklist);
ListAdapter adapter = new ListAdapter(tasklist);
list_view.setAdapter(adapter);
}
@Override
protected String doInBackground(String... params) {
try {
String response = Util.excuteGet(params[0]);
return response;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}`
【问题讨论】:
-
你在主线程上做的事情太多了。
-
见下面的答案。
-
您应该在
doInBackground()中进行解析,而不是在onPostExecute()中。 -
使用 OkHttp 或 Volley 库而不是 AsyncTask
标签: android