如何让我的UI加载速度更快,性能更好?

时间:2016-10-04 07:14:52

标签: android performance user-interface android-asynctask nullpointerexception

我有一个UI,其中包含一个按钮和一个包含一些数据的列表。当用户在加载列表之前单击按钮时,它会给出NPE。我添加了这样的空检查,以防止崩溃。

//here cardData is the List  which needs load. 
if (cardData != null) {
    for (CardDisplayData display : cardData) {
               // do something
            }   
}

我在onCreate

结束时这样做了
      new FetchData().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR).get();

我删除了空检查并替换了执行程序。现在,列表数据在打开UI之前加载,并且不再发生崩溃。但是,当UI首先加载然后实现按钮监听器时,这会降低性能。

我的异步任务,

 private class FetchData extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... voids) {
            displayData(); // here is the data that needs to be displayed
            return null;
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
            try {
                Collections.sort(cardData);
            } catch (IllegalStateException ise) {
                LOG.warn("Illegal state exception, ignoring it {}", ise);
            }
            PrintStockAdapter adapter = new PrintStockAdapter(getApplicationContext(), cardData);
            details.setAdapter(adapter); //details is a listView
            adapter.notifyDataSetChanged();
        }
    }

1 个答案:

答案 0 :(得分:0)

试试这个:

if (cardData.lenght > 0) {
for (CardDisplayData display : cardData) {
           // do something
        }   
    }