2011-12-18 60 views
0

我在後臺連接到藍牙,並且我想要顯示警報或吐司befor處理套接字。從非UI線程顯示AlertDialog

這裏是我的代碼

mmSocket.connect(); 
connectionHandler.post(new Runnable() { 
    public void run() { 
     AlertDialog.Builder builder = new AlertDialog.Builder(BluetoothSampleActivity.this); 
     builder.setMessage("conneted"); 
     builder.show(); 
    } 
}); 
manageConnectedSocket(mmSocket); 

但據我所知警報中只當這將結束他的工作。如何在執行manageConnectedSocket(mmSocket)之前顯示警報;

P.S:我tryed runOnUiThread - 它並沒有幫助

+0

此代碼在哪裏運行?服務,AsyncTask等? – gwa 2011-12-18 21:37:01

+0

只是運行()線程對象 – earsonheart 2011-12-18 21:41:15

回答

2

我建議你的邏輯從正常線程到的AsyncTask移動。無論何時您需要做繁重的工作,而且還需要與UI進行交互,AsyncTask都是最佳實踐。

在preExecute()方法上,您將顯示對話框或更新UI,在doInBackground上,您可以執行任何您需要執行的操作,並在onPostExecute上關閉對話框或重新更新UI。

這裏的AsyncTask doc

恩加,如果您需要顯示您在後臺執行的工作的進度,由於方法publishProgress/onProgressUpdate,它變得非常容易。