Я получаю неправильную ошибку потока, поэтому я думаю, что мне нужно выполнить недействительность из потока пользовательского интерфейса. Обычно у меня есть что-то вроде:Изменить код для запуска в потоке пользовательского интерфейса?
public void run() {
runOnUiThread(new Runnable() {
}});
Но мне нужно назвать этот runnable ссылкой на него по методу. Как включить runOnUiThread в это?
Handler viewHandler = new Handler();
Runnable updateView = new Runnable() {
@Override
public void run() {
mEmulatorView.invalidate();
if (statusBool == true) {
for (int i = 1; i < dataReceived.length() - 1; i++) {
if (dataReceived.charAt(i) == '>') {
Log.d(TAG, "found >");
deviceStatus = 0;
}
if (dataReceived.charAt(i) == '#'
&& dataReceived.charAt(i - 1) != ')') {
Log.d(TAG, "found #");
deviceStatus = 1;
}
if ((i + 1) <= (dataReceived.length())
&& dataReceived.charAt(i) == ')'
&& dataReceived.charAt(i + 1) == '#') {
Log.d(TAG, "found config)#");
deviceStatus = 2;
}
}
statusBool = false;
viewHandler.postDelayed(updateView, 1000);
}
}
};
назвав его:
public void onDataReceived(int id, byte[] data) {
dataReceived = new String(data);
((MyBAIsWrapper) bis).renew(data);
mSession.write(dataReceived);
viewHandler.post(updateView);
}
Вы уверены, что используете это неправильно? Если вы разместите его в 'viewHandler' и' viewhandler' был создан на ui-потоке, тогда он не должен бросать такую ошибку. –
Можете ли вы отправить сообщение об ошибке здесь? –
вот ошибка: http://i.imgur.com/s4mTt.png – Paul