2016-04-04 41 views
-5

我正在開發一個應用程序,它有其餘的API調用和4個選項卡使用頁面滑動選項卡條,但我的問題是,當我從左到右移動選項卡爲時已晚,顯示頁面並觸發5到8秒爲什麼?在這裏我正在使用片段。我的應用程序就像應用程序一樣。如何加快我的應用程序?

感謝advance.`

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; 
    } 
}` 
+1

你在主線程上做了太多事情。 – EpicPandaForce

+0

http://stackoverflow.com/questions/15472383/how-can-i-run-code-on-a-background-thread-on-android – Kenn

+2

看下面的答案。 –

回答

3

一個簡單的辦法做到這一點是使用的AsyncTask(後臺服務)。 recycler view取代listviews。雖然下載速度取決於連接,但您可以使用對話框或進度條向用戶指示。

+0

儘量避免在高層次級別阻塞主線程和不必要的廢票 使用RelativeLayouts 避免嵌套權重LinearLayouts 避免造成不必要的對象 使用靜態最後的常量。 –

相關問題