ProgressDialogのAsyncTask内でLooper.prepare()を呼んでいないスレッドでハンドラを作成できない
2023-07-21 16:03:48
質問
なぜこのエラーが発生するのか理解できません。私はバックグラウンドでいくつかのプロセスを実行するためにAsyncTaskを使用しています。
私は持っています。
protected void onPreExecute()
{
connectionProgressDialog = new ProgressDialog(SetPreference.this);
connectionProgressDialog.setCancelable(true);
connectionProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
connectionProgressDialog.setMessage("Connecting to site...");
connectionProgressDialog.show();
downloadSpinnerProgressDialog = new ProgressDialog(SetPreference.this);
downloadSpinnerProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
downloadSpinnerProgressDialog.setMessage("Downloading wallpaper...");
}
に入ると
doInBackground()
によって、条件I:
[...]
connectionProgressDialog.dismiss();
downloadSpinnerProgressDialog.show();
[...]
を試すと、いつも
downloadSpinnerProgressDialog.show()
というエラーが出ます。
何かアイデアはありますか?
どのように解決するのですか?
方法
show()
から呼び出されなければなりません。
ユーザーインターフェース(UI)スレッド
から呼び出されなければなりません。
doInBackground()
は別のスレッドで実行されるため、これが
AsyncTask
が設計された主な理由です。
を呼び出す必要があります。
show()
のどちらかで
onProgressUpdate()
または
onPostExecute()
.
例えば
class ExampleTask extends AsyncTask<String, String, String> {
// Your onPreExecute method.
@Override
protected String doInBackground(String... params) {
// Your code.
if (condition_is_true) {
this.publishProgress("Show the dialog");
}
return "Result";
}
@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
connectionProgressDialog.dismiss();
downloadSpinnerProgressDialog.show();
}
}
関連
-
[解決済み】Looper.prepare()を呼び出していないスレッド内でハンドラを作成できない。)
-
java.sql.SQLException: executeQuery()でデータ操作文を発行できません。
-
メモ帳でJavaプログラムをコンパイルして実行すると、Could not find or load main class ...というエラーが表示される。解決方法
-
Git Pull Failed マージされていないファイルがあるため、Pull できません。
-
ApplicationContextの起動エラーです。条件レポートを表示するには、アプリケーションを'de'で再実行します。
-
シェルコマンドやスクリプトのJavaコール
-
Java appears タイプEを囲むインスタンスがアクセスできない。
-
eclipse にリソースリーク:'in' が閉じない
-
Web Project JavaでPropertiesファイルを読み込むと、「指定されたファイルがシステムで見つかりません」というソリューションが表示されます。
-
[解決済み] Mockitoを使用して特定のメソッドが呼び出されていないことを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipse の問題 アクセス制限。タイプ 'jfxrt' はAPI解決されていません。
-
プロジェクトの依存関係を解決できない。
-
Uncaught ReferenceError: は定義されていません。
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
XXX型を囲むインスタンスがJavaでアクセスできない
-
X11 DISPLAY変数が設定されていない」問題の解決方法
-
maven レポート エラー 解決不可能な親POM
-
Javaがエラーで実行される、選択が起動できない、最近起動したものがない
-
春ブート複数のデータソースの管理(atomikos)同じサーバーホスト上の複数のプロジェクトを開始する複数のJava - jarのエラーソリューション
-
[解決済み] Android UiThread(UIスレッド)とは?