簡體   English   中英

Android-緩慢啟動新活動

[英]android - slow starting new Activity

我的項目中的“第二個活動”的啟動速度很慢,我不知道如何解決。 它是如何工作的(一切都在onCreate()中):首先,它使用json來獲取對頁面的請求:

try {
        DefaultHttpClient hc = new DefaultHttpClient();
        ResponseHandler<String> res = new BasicResponseHandler();
        HttpGet getMethod = new HttpGet(url);
        String response = hc.execute(getMethod, res);
        resStr = response.toString();
    } catch (Exception e) {
        System.out.println("Exp=" + e);
    }

我知道這里不推薦使用某些方法,但是我不知道如何使其更優化。 結果,它返回帶有約32個對象的JSON數組的字符串。 然后,我填充6個數組以將它們傳遞給ArrayAdapter來填充ListView。 獲取不同類型數據的方法如下所示:

public static String GetWantedType(String resStr, int num) {
    String jsonvalues = "";
    try {
        JSONArray json_Array = new JSONArray(resStr);
        JSONObject json_data = json_Array.getJSONObject(num);
        jsonvalues = json_data.getString("wanted_type");
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return jsonvalues;
}

也許我應該在填充數組之外創建一次json_Array,然后將其作為JSONArray而不是字符串傳遞給這些方法-我不知道它是否會影響速度。 在ArrayAdapter中,一切似乎都很好,我使用的是ViewHolder,並且滾動效果非常好。 不像開始活動。

如何使其更好,更優化?

首先,不要在onCreate()進行所有操作,而最好在onResume()

其次,所有服務器調用都應使用Async在后台線程中,並使用結果顯示用戶。

如果您不想在onResume()onPause()期間多次調用數據API,則可以使用數組中數據的結果,也可以在onResume()調用時檢查是否有數據,只需加載,否則從服務器獲取。

正如Gaurav所說,問題在於在主線程上調用了網絡請求。 在您要求網絡調用程序時,請說:OK STOP I WAIT RESPONSE。 因此,如果您要更改此設置,則可以執行各種操作。 例如,您可以使用帶有lib(loopj lib)的異步網絡調用,也可以簡單地打開Thread:進行網絡調用。

這樣,您的用戶界面將不會凍結

您是否正在主線程上進行網絡呼叫? 請不要這樣做。 而是在不同的線程上執行網絡操作。

對於聯網,您可以使用庫改造 通過使用回調或RxJava中的Observable,它還使您可以輕松地異步執行操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM