我想使用菜单向处理程序发送消息。并且处理程序启动了一个线程以从服务器进行更新。
但是,当我测试我的应用程序时,我关闭了服务器并按下了菜单。android 应用程序在菜单中被阻止,这不应该发生,因为菜单只是发送一条消息。因此我的用户界面被阻止了。
这是代码
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;
}
我找不到我的答案。谢谢大家。