我最近一直在开发一些基本的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?
任何建议或意见将不胜感激。
答案 0 :(得分:0)
结果我需要在新线程上处理sendBTMessage,例如:
new Thread(new Runnable() {
public void run(){
...processing
}
}).start();
并使用
顺利运行UIRunOnUiThread(Runnable)