【问题标题】:How can I speed up my app?我怎样才能加快我的应用程序?
【发布时间】: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


【解决方案1】:

一个简单的方法是使用 AsyncTask(后台服务)。 回收站视图代替列表视图。虽然下载速度取决于连接,但您可以使用对话框或进度条向用户发出指示。

【讨论】:

  • 尽量避免阻塞主线程和不必要的失效在高层次使用RelativeLayouts避免在LinearLayouts中嵌套权重避免创建不必要的对象使用静态Final作为常量。
【解决方案2】:

阅读这篇文章。 https://medium.com/@laanayabdrzak/android-performance-patterns-rescue-tips-8c1e4c7cb1f0#.v2kpxt7cp

提高性能是应用程序开发的另一半))

【讨论】:

    【解决方案3】:

    您的问题与性能提升无关,您只是误用了 AsyncTask。但是,关于性能,在 Udacity.com 你可以找到这个主题的不错的课程https://www.udacity.com/course/android-performance--ud825

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-13
      • 2017-06-11
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 2021-11-21
      • 2014-08-13
      • 2021-08-01
      相关资源
      最近更新 更多