2014-07-17 188 views
-1

我最近一直在开发一些基本的Android应用程序,并注意到一个有点奇怪的行为,我相信这是我自己的错误行为。UI线程问题

这个问题似乎与我用于更新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

请张贴在sendBTmessage执行代码。答案真的取决于你如何连接 –

+0

你从哪些回调方法调用每个函数? – Sitram

+0

你还可以从哪里调用sendMessage()。为任何劳动密集型任务提供asyncTasks可能是一个好主意,所以你的UI不是瓶颈 – erik

回答

0

原来我需要处理sendBTMessage上一个新的线程,例如:

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

和UI运行顺利使用

RunOnUiThread(Runnable)