Android FATAL EXCEPTION:Thread-101エラー問題
2338 ワード
最近、小さなエラーが発生しましたが、よく注意しない可能性があります.ほとんどの場合、サブスレッドで時間のかかる操作を行い、メインスレッドでUIを更新していることを知っています.そのため、サブスレッドが時間をかけて操作するものがたくさんあります(くだらないことを言いました).私が直面した問題についてお話しします.
上の問題は間違っていないようで、上のコードの意味は簡単で、私はサブスレッドを開いて、それから入力ボックスの値を手に入れて、空ではない判断を行って、それからToastはヒントを与えて、空のために私の一連の口の時間の操作を実行しません.全体的には大丈夫ですね.鉄さん、初級プログラマーさん.......
私たちはサブスレッドにいるので、UIメインスレッドを実行できません.のtoastはメインスレッドに表示されているもの....だから……、
解決策の使用
ここではToaseを使います
runOnUI Threadこれを見ると名前だけでrun(これ)on(戻る)UI(ui)Thread(スレッド)がメインスレッドUIスレッドに戻って動作することが理解できますが、ははは、私はこのように理解しています.正しいコードです.
RunonUIthreadは、Handlerの実行を開始することもできます.
実は問題を大きな白話で言えば、サブスレッドは時間のかかる操作を実行し、メインスレッドはリフレッシュUIを実行する.そのツールを使ってメインスレッドに戻ってUIリフレッシュを実行すればいいです.
new Thread(new Runnable() {
@Override
public void run() {
String numgo = EDITGO.getText().toString().trim();
Log.w("Main", "num" + numgo);
if (numgo.equals("")) {
Toast.makeText(contextPub, " ", Toast.LENGTH_SHORT).show();
} else {
String sOut = ComS2.ES_LotteryGoOut(Integer.valueOf(numgo));
DuihuakuangShow(sOut);
}
}
}).start();
上の問題は間違っていないようで、上のコードの意味は簡単で、私はサブスレッドを開いて、それから入力ボックスの値を手に入れて、空ではない判断を行って、それからToastはヒントを与えて、空のために私の一連の口の時間の操作を実行しません.全体的には大丈夫ですね.鉄さん、初級プログラマーさん.......
私たちはサブスレッドにいるので、UIメインスレッドを実行できません.のtoastはメインスレッドに表示されているもの....だから……、
解決策の使用
runOnUiThread(new Runnable() {
@Override
public void run() {
ここではToaseを使います
}
});
runOnUI Threadこれを見ると名前だけでrun(これ)on(戻る)UI(ui)Thread(スレッド)がメインスレッドUIスレッドに戻って動作することが理解できますが、ははは、私はこのように理解しています.正しいコードです.
new Thread(new Runnable() {
@Override
public void run() {
String numgo = EDITGO.getText().toString().trim();
Log.w("Main","num"+numgo);
if(numgo.equals("")){
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(contextPub," ",Toast.LENGTH_SHORT).show();
}
});
}else {
String sOut = ComS2.ES_LotteryGoOut(Integer.valueOf(numgo));
DuihuakuangShow(sOut);
}
}
}).start();
RunonUIthreadは、Handlerの実行を開始することもできます.
実は問題を大きな白話で言えば、サブスレッドは時間のかかる操作を実行し、メインスレッドはリフレッシュUIを実行する.そのツールを使ってメインスレッドに戻ってUIリフレッシュを実行すればいいです.