-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();
}
}
は疑問 –
であなたのアクティビティコードを投稿するには、あなたがここにあなたの完全なアクティビティコードを投稿してくださいもらえますか? –
@KatieKat私の答えをチェック –