メニューを使用してハンドラにメッセージを送信したいと考えています。ハンドラはサーバから更新するスレッドを開始しました。サーバーが閉鎖されているときに更新中にメニューがブロックされる
しかし、私は私のアプリをテストしたときに、私はサーバーを終了し、メニューを押した。アンドロイドアプリはメニュー内でブロックされています。メニューはメッセージを送信するだけなので発生しません。したがって、私のUIはブロックされました。ここで
は、私は私の答えを見つけることができませんコード
final Handler messageHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.arg2) {
case 0:
int total = msg.arg1;
progressDialog.setProgress(total);
if (total >= progressDialog.getMax()) {
// 取消Dialog并且置0
dismissDialog(PROGRESS_DIALOG);
progressDialog.setProgress(0);
Toast.makeText(CardProcessView.this, "下载完成",
Toast.LENGTH_SHORT).show();
initData();
}
break;
case 1:
updatabase();
break;
}
}
};
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 0:
Message message = new Message();
message.arg2 = 1;
messageHandler.sendMessage(message);
break;
default:
Log.d("update", "未更新");
}
return true;
}
protected void updatabase() {
new Thread(updateRunable).run();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("更新操作向导");
return true;
}
です。みんなありがとう。
new Thread(updateRunable).run();
へ:
新しいスレッド(updateRunable).run();改成 '新しいスレッド(updateRunable).start();' – idiottiger