メニューを使用してハンドラーにメッセージを送信したい。そして、ハンドラーはサーバーから更新するスレッドを開始しました。
ただし、アプリをテストしたときに、サーバーを閉じてメニューを押しました。メニューはメッセージを送信するだけなので、Androidアプリはメニューでブロックされます。そのため、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;
}
答えが見つかりません。みなさん、ありがとうございました。