-1

私はボタンといくつかのデータを含むリストを含むUIを持っています。リストがロードされる前にユーザーがボタンをクリックすると、NPEが表示されます。私はクラッシュを防ぐこのようなヌルチェックを追加しました。私のUIをより速く読み込んでパフォーマンスを向上させるにはどうすればいいですか?

//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(); 

の終わりにこれをやっていた私は、NULLチェックを削除し、エグゼキュータを置き換えます。今、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(); 
     } 
    } 
+0

は疑問 –

+0

であなたのアクティビティコードを投稿するには、あなたがここにあなたの完全なアクティビティコードを投稿してくださいもらえますか? –

+0

@KatieKat私の答えをチェック –

答えて

0

はこれを試してみてください。

if (cardData.lenght > 0) { 
for (CardDisplayData display : cardData) { 
      // do something 
     } 
    } 
関連する問題