2014-07-17 108 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)