У меня вопрос по поводу приложения для Android. Позже я хочу создать игру, и сейчас я пробую классы и функции, которые мне нужно понять.
Сейчас я пытаюсь понять, как правильно использовать потоки, но мое приложение «принудительно закрывает», когда я касаюсь кнопки.
Для этого тестового приложения у всех на экране есть один TextView и одна кнопка.
Кнопка вызывает threadStart () при нажатии. (onClick в xml)
И что я хочу сделать, это создать поток, который увеличивает переменную значение на 1, а затем сообщить в поток пользовательского интерфейса, который затем обновит текстовое представление с новым значением.
Может кто-нибудь увидеть, что я делаю не так с этим маленьким кусочком кода?
package com.weldeborn.tc;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;
public class ThreadCounter extends Activity {
TextView txtCounter1;
int value=0;
final Handler mHandler = new Handler();
final Runnable mUpdateResults = new Runnable() {
public void run() {
updateResult();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txtCounter1 = (TextView) findViewById(R.id.counter1);
}
protected void threadStart() {
Thread t = new Thread() {
public void run() {
doSomething();
mHandler.post(mUpdateResults);
}
};
t.start();
}
private void doSomething() {
value = value+1;
}
private void updateResult() {
txtCounter1.setText(value);
}
}
Мой код основан на примере из Разработчик Android: общие задачи и способы их выполнения в разделе «Обработка дорогостоящих операций в потоке пользовательского интерфейса».
Я благодарен за любую помощь.