2011-12-18 17 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:私はrunOnUiThreadをしようと試み - それは私がAsyncTaskに、通常のスレッドから、あなたのロジックを移動することをお勧め

+0

このコードはどこで実行されていますか?サービス、AsyncTaskなど? – gwa

+0

Threadオブジェクトのrun()だけです。 – earsonheart

答えて

2

を助けにはなりませんでした。大量の作業を行うだけでなく、UIと対話する必要があるときはいつでも、AsyncTaskがベストプラクティスです。

preExecute()メソッドでは、ダイアログまたは更新UIを表示します。doInBackgroundでは必要な処理を行い、onPostExecuteではダイアログを閉じたり、UIを再更新したりします。

ここではAsyncTask docです。

エンプラスでは、バックグラウンドで行っている作業の進行状況を表示する必要がある場合、publishProgress/onProgressUpdateメソッドのおかげで非常に簡単になります。

関連する問題