1つの問題をどのように解決するべきか疑問に思っています。
アクティビティを開始すると、AsyncTask
.
ユーザーがメニューのオプションを選択すると、キャッシュされたデータが使用されます。
データのダウンロード中にオプションを選択するとどうなりますか? UI をブロックせずにデータを待つ最善の方法は何ですか?
edit : メニューを変更したり、オプションを無効にしたりしたくありません。データのダウンロードが完了するのを待っている間にスピナーを表示したい。
ありがとう
1つの問題をどのように解決するべきか疑問に思っています。
アクティビティを開始すると、AsyncTask
.
ユーザーがメニューのオプションを選択すると、キャッシュされたデータが使用されます。
データのダウンロード中にオプションを選択するとどうなりますか? UI をブロックせずにデータを待つ最善の方法は何ですか?
edit : メニューを変更したり、オプションを無効にしたりしたくありません。データのダウンロードが完了するのを待っている間にスピナーを表示したい。
ありがとう
onMenuOpened() の項目を無効/有効にします。
@Override
public boolean onMenuOpened(int feature, Menu menu) {
if (menu != null) {
menu.getItem(INDEX_FOR_THE_MENU_ITEM).setEnabled(stuffIsAvailable);
}
return super.onMenuOpened(feature, menu);
}
編集 - 進行状況ダイアログの表示:
ProgressDialog dialog = new ProgressDialog(context);
dialog.setMessage(context.getString(dialogTextResourceId));
dialog.show();
完了したら )を忘れないでくださいdialog.dismiss(
。
メニューオプションが押されたときに呼び出すことができAsyncTask.getStatus()
、まだ実行中の場合は ProgressDialog を表示します。
次に、AsyncTask.onPostExeute()
アクティビティでデータが利用可能であることを伝え、スピナーを閉じることができます。
ダウンロードの開始時にキャンセルできない進行状況ダイアログを実行し、ダウンロードが完了したら閉じます。ProgressDialog
クラスを読んでください。