Tablelayout addView减慢了应用程序的速度

时间:2016-03-27 10:33:16

标签: android performance android-tablelayout

我想要在117中添加TableRows TableLayout,问题是Activity启动速度慢了吗?我尝试在后台创建TableRow,然后在publishProgress行创建行,以便同时添加所有行可能不会导致问题,但我仍然有lag个发射,市场投入。到目前为止我所做的是以下内容:

private class AsyncTaskLoadData extends AsyncTask<Void, CopyOnWriteArrayList<TableRow>, ArrayList<TableRow>> {


        protected void onPreExecute() {
            showProgressDialog();
            tableLayout.setVisibility(View.GONE);
        }


        @Override
        protected void onProgressUpdate(CopyOnWriteArrayList<TableRow>... values) {
            super.onProgressUpdate(values);
            for (TableRow tr : values[0]) {
                tableLayout.addView(tr);
            }
        }
        protected ArrayList<TableRow> doInBackground(Void... params) {


            CopyOnWriteArrayList<TableRow> arr_rows = new CopyOnWriteArrayList<>();
            TableRow row = null;
            for (int i = 0; i < statementSummaryMainReports.size(); i++) {
                StatementSummaryMain report = statementSummaryMainReports.get(i);
                row = printRows(report);
                arr_rows.add(row);
                if(i%25==0) {
                    publishProgress(arr_rows);
                    arr_rows.clear();
                }

            }

            publishProgress(arr_rows);
            return null;
        }



        protected void onPostExecute(ArrayList<TableRow> result) {
            tableLayout.setVisibility(View.VISIBLE);
            hideProgressDialog();
        }
    }
  

如何提高TableLayout addView的性能以便添加   117 TableRows不会减慢活动

提前致谢。

1 个答案:

答案 0 :(得分:0)

创建117 TableRows是一个非常糟糕的设计。因为带有这些行的TableLayout占用了大量内存,因此android提供了使用回收视图的小部件。您必须考虑将RecyclerViewListView多种视图类型一起使用。使用这种方法只有可见视图或换句话说只有必要的视图占用内存并被绘制。因此,设置时间将非常短,因为只有可见视图正在初始化。