UI线程问题

时间:2014-07-17 13:42:50

标签: android multithreading user-interface bluetooth

我最近一直在开发一些基本的Android应用程序,并注意到一种有点奇怪的行为,我确信这是我自己做错了。

问题似乎在于我用于更新UI的主要线程和一些处理,例如通过蓝牙发送消息。

假设我有以下内容:

public void sendMessage(){
  updateUI();
  sendBtMessage();
}

public void updateUI(){
  txtView.setText("Sending message");
  progressbar.setVisibility(View.VISIBLE);
}

public void sendBTmessage(){
... connect to BT and send message here
}

当我运行我的代码时,它似乎首先运行sendBtMessage,因为在发送消息之后会出现UI更新(我希望在发送消息之前)。这是因为主线程的优先级是先做最重的工作负载吗?

主线程是否应仅用于更新UI?

任何建议或意见将不胜感激。

1 个答案:

答案 0 :(得分:0)

结果我需要在新线程上处理sendBTMessage,例如:

new Thread(new Runnable() {
    public void run(){
      ...processing   
    }
}).start();

并使用

顺利运行UI
RunOnUiThread(Runnable)