Когда я вызываю эту ветку в своей деятельности, пользовательский интерфейс перестает отвечать на запросы, и поэтому я не могу ничего сделать после его запуска.Я бы предположил, что это связано с потоками ввода / вывода, но я не уверен, как решить проблему.Буду признателен за любую помощь, но я новичок в Android и многопоточности, поэтому у меня могут быть некоторые дополнительные вопросы.
Вот моя тема:
mHandler = new Handler();
new Thread(new Runnable() {
@Override
public void run () {
mHandler.post(new Runnable() {
@Override
public void run () {
int counter = 0;
while (true) {
counter++;
try {
output = "";
if (mInStream != null) {
mInStream.read(buffer);
for (byte b : buffer) {
char c = (char) b;
if (c >= ' ' && c < 'z') {
//System.out.print(c);
output += c;
}
}
//System.out.println();
Intent intent = new Intent();
intent.setAction("com.curie.WEIGHT_RECEIVED");
intent.putExtra("Output",output);
if (counter % 10 == 0) {
System.out.println(counter);
LocalBroadcastManager.getInstance(InputActivity.getContext()).sendBroadcastSync(intent);
}
}
// Send the obtained bytes to the UI Activity
} catch (IOException e) {
//an exception here marks connection loss
//send message to UI Activity
break;
}
}
}
});
}
}).start();
РЕДАКТИРОВАТЬ: Ответ действительно решил мою проблему, хотя я сейчас получаю эту ошибку, хотя.Эта ошибка возникает, когда я вызываю inputwindow.setText(weight)
, который устанавливает текст в TextView в значение, которое было передано из потока.
E/AndroidRuntime: FATAL EXCEPTION: Thread-2358
Process: com.example.curie.fairbanks_03, PID: 15718
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:8358)
at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:1364)
at android.view.ViewGroup.invalidateChild(ViewGroup.java:5433)
at android.view.View.invalidateInternal(View.java:13997)
at android.view.View.invalidate(View.java:13961)
at android.view.View.invalidate(View.java:13945)
at android.widget.TextView.checkForRelayout(TextView.java:8403)
at android.widget.TextView.setText(TextView.java:5011)
at android.widget.TextView.setText(TextView.java:4836)
at android.widget.TextView.setText(TextView.java:4811)
at com.example.curie.fairbanks_03.InputActivity$2.onReceive(InputActivity.java:67)
at android.support.v4.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:311)
at android.support.v4.content.LocalBroadcastManager.sendBroadcastSync(LocalBroadcastManager.java:289)
at com.example.curie.fairbanks_03.BluetoothConnection$2.run(BluetoothConnection.java:176)
at java.lang.Thread.run(Thread.java:818)