Android 服务器关闭时更新时菜单被阻止

Android 服务器关闭时更新时菜单被阻止,android,menu,download,Android,Menu,Download,我想使用菜单向处理程序发送消息。处理程序启动了一个从服务器更新的线程 然而,当我测试我的应用程序时,我关闭了服务器并按下了菜单。android应用程序在菜单中被阻止,这不应该发生,因为菜单只是发送消息。因此,我的UI被阻止 这是密码 final Handler messageHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.arg2) { case

我想使用菜单向处理程序发送消息。处理程序启动了一个从服务器更新的线程

然而,当我测试我的应用程序时,我关闭了服务器并按下了菜单。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;
}
我找不到我的答案。谢谢大家。

您需要更改:

new Thread(updateRunable ).run();
致:


thread.run()
只需调用线程的run方法,不要在新线程中启动该方法,您需要调用
thread.start()
来创建一个线程,并在此新线程中调用
run
方法。

新线程(updateRunable).run()改成 <代码>新线程(updateRunable).start()谢谢!它起作用了。我应该花些时间复习一些java知识。
new Thread(updateRunable ).start();