Я использую обработчик для связи с другим потоком, который отвечает за связь по Bluetooth. Когда связь установлена, я хочу отправить список массивов байтов и показать прогресс.
Handler handler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message inputMessage) {
switch (inputMessage.what) {
case CONNECTION_STATE:
connected = (boolean) inputMessage.obj;
Log.d(TAG, "connected= " + String.valueOf(connected));
if (connected) {
for (int i = 0; i < data2send.size(); i++) {
if (!isCancelled) {
isPrinting = true;
printButton.setText(getString(R.string.cancel));
byte[] bytes2send = new byte[data2send.get(i).getDataLength()];
System.arraycopy(data2send.get(i).getData(), 0, bytes2send, 0, data2send.get(i).getDataLength());
try {
int progress = (i+1) * 100 / data2send.size();
Log.d(TAG, "onProgressUpdate: progress = " + progress + " %");
String statusString = getString(R.string.sending_page) + String.valueOf(i+1) + getString(R.string.of) + String.valueOf(data2send.size());
Log.d(TAG, statusString);
status.setText(statusString);
progressBar.setProgress(progress);
connectThread.write(bytes2send);
} catch (Exception e) {
Log.e(TAG, "connection error");
}
} else {
isPrinting = false;
printButton.setText(getString(R.string.print_caps));
break;
}
}
}
break;
}
}
};
connectThread = new ConnectThread(printer, handler);
connectThread.start();
}
Ни содержимое TextView, ни ProgressBar не могут быть обновлены при отправке данных, но ведение журнала работает (log.d).