2

基于按钮单击,我必须进行一些需要一些时间的处理。所以我决定在与主 UI 线程不同的线程中执行此操作。

现在,基于单独线程中的计算,我调用 UI 线程的主类中的一个函数,从该线程中创建了这个新线程。在这个函数中,我更新了 UI。有人告诉我这不起作用,因为我需要调用主 UI 线程。

有人可以帮我吗?

@Override
public void onListItemClicked(int index, Map<String, Object> data) {

    new Thread(new Runnable() {
        @Override
        public void run() {
            // Issue command() on a separate thread
            wasCommandSuccess(command());
        }
    }).start();
}


private void wasCommandSuccess(boolean result){
    if (result == false){
        getUI(BasicUI.class).showAlert("Command failed!", "Unable to access");
    }
}
4

1 回答 1

1

您应该在 runOnUiThread(); 中调用函数 wasCommandSuccess;所以你应该有这样的代码:

@Override
public void onListItemClicked(int index, Map<String, Object> data) {

    new Thread(new Runnable() {
        @Override
        public void run() {
            // Issue command() on a separate thread
            final boolean result = command();
            // you need to pass your context (any of Activity/Service/Application) here before this
            context.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    wasCommandSuccess(result);
                }
            });
        }
    }).start();
}


private void wasCommandSuccess(boolean result){
    if (result == false){
        getUI(BasicUI.class).showAlert("Command failed!", "Unable to access");
    }
}
于 2013-04-10T09:29:02.297 回答