[Android]Can't create handler inside thread that has not called Looper.prepare()
いずれも、新しく開いたスレッドでUIを更新するためにエラーが発生し、サブスレッドでメインスレッドUIを更新するにはHandlerが必要となる.今日は次のエラーが発生しました.コードは次のとおりです.
上の行のコードも処理してhandlerに入れた後、エラーはなくなりました.
Handlerは、主にサブスレッドから送信データを受け取り、このデータをメインスレッドに合わせてUIを更新するように定義.Handlerの主な役割:主に非同期メッセージの処理Handlerの実行プロセス:(サブスレッド)メッセージが発行された後、まず(メインスレッドの)メッセージキューに入り、メッセージを送信する関数はすぐに戻り、メインスレッドのHandlerはメッセージキューからメッセージを取り出し、メッセージを処理する.これにより、スレッド間UI更新が実現される(実際にはメインスレッドで行われる).このメカニズムは、ネットワークへのアクセスに時間がかかる操作、大きなファイルの読み取り、時間がかかる操作処理など、比較的長い操作を処理するために一般的に使用される.
send.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), " UI", Toast.LENGTH_SHORT).show();
}
});
}
});
Toast.makeText(getApplicationContext(), " UI", Toast.LENGTH_SHORT).show();
はこの言葉が引き起こした災いだ.上の行のコードも処理してhandlerに入れた後、エラーはなくなりました.
Handlerは、主にサブスレッドから送信データを受け取り、このデータをメインスレッドに合わせてUIを更新するように定義.Handlerの主な役割:主に非同期メッセージの処理Handlerの実行プロセス:(サブスレッド)メッセージが発行された後、まず(メインスレッドの)メッセージキューに入り、メッセージを送信する関数はすぐに戻り、メインスレッドのHandlerはメッセージキューからメッセージを取り出し、メッセージを処理する.これにより、スレッド間UI更新が実現される(実際にはメインスレッドで行われる).このメカニズムは、ネットワークへのアクセスに時間がかかる操作、大きなファイルの読み取り、時間がかかる操作処理など、比較的長い操作を処理するために一般的に使用される.