Android UI线程问题
我最近一直在开发一些基本的Android应用程序,注意到一个有点奇怪的行为,我确信这是我自己的错误行为 问题似乎出在主线程上,我用它来更新UI和一些处理,比如通过蓝牙发送消息 假设我有以下几点:Android UI线程问题,android,multithreading,user-interface,bluetooth,Android,Multithreading,User Interface,Bluetooth,我最近一直在开发一些基本的Android应用程序,注意到一个有点奇怪的行为,我确信这是我自己的错误行为 问题似乎出在主线程上,我用它来更新UI和一些处理,比如通过蓝牙发送消息 假设我有以下几点: public void sendMessage(){ updateUI(); sendBtMessage(); } public void updateUI(){ txtView.setText("Sending message"); progressbar.setVisibility
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吗
任何建议或建议都将不胜感激。结果表明我需要在新线程上处理sendBTMessage,例如:
new Thread(new Runnable() {
public void run(){
...processing
}
}).start();
用户界面使用
RunOnUiThread(Runnable)
请发布在sendBTmessage中执行的代码。答案实际上取决于您如何从调用这些函数的回调方法进行连接,以及从何处调用sendMessage()。对于任何劳动密集型任务,最好使用asyncTasks,这样您的UI就不会出现瓶颈