Отображение AlertDialog из не пользовательского интерфейса - PullRequest
0 голосов
/ 19 декабря 2011

Я подключаюсь к Bluetooth в фоновом режиме и хочу показать предупреждение или тост перед обработкой сокета.

Вот мой код

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); ?

PS: я попытался запустить runOnUiThread - это не помогло

1 Ответ

2 голосов
/ 19 декабря 2011

Я предлагаю перенести вашу логику из обычного потока в AsyncTask. Всякий раз, когда вам приходится выполнять тяжелую работу, а также взаимодействовать с пользовательским интерфейсом, AsyncTask - это лучшая практика.

В методе preExecute () вы показываете диалоговое окно или обновляете пользовательский интерфейс, в doInBackground вы делаете все, что вам нужно, а в onPostExecute вы закрываете диалоговое окно или обновляете пользовательский интерфейс.

Здесь документ AsyncTask .

Кроме того, если вам нужно показать ход работы, которую вы выполняете в фоновом режиме, это очень просто благодаря методам publishProgress / onProgressUpdate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...