Вопрос по android – Как изменить что-то в новом действии TimerTask в Android?

0

У меня проблема с timerTask в Android У меня есть код, подобный этому:

<code>timer = new Timer();
timer.schedule(new TimerTask() {
        public void run() {
            countInt = countInt + 1;
            textview1.setText(countInt);
        }
    }, 1000);
</code>

каждый раз, когда запускается задание таймера, мое приложение зависало, что происходит, потому что я обращаюсь к textview, и он находится в другом потоке, верно?

как это решить?

Ваш Ответ

2   ответа
3

 timer = new Timer();
    timer.schedule(new TimerTask() {
            public void run() {
                countInt = countInt + 1;
                yourActivity.this.runOnUiThread(new Runnable()
               public void run(){
                  {textview1.setText(String.valueOf(countInt))});
                }
            }
        }, 1000);

Вылетает из-за того, что вы что-то балуете( textview1.setText(countInt);) который принадлежит потоку пользовательского интерфейса, который не допускается ...

4

вы получаете доступ к представлениям не из потока пользовательского интерфейса. Чтобы решить эту проблему, вы можете опубликовать ветку Runnable для пользовательского интерфейса, используя вашу деятельность

timer = new Timer();
timer.schedule(new TimerTask() {
    public void run() {
        countInt = countInt + 1;
        YourActivity.this.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                textview1.setText(countInt);
            }
        });
    }
}, 1000);

Похожие вопросы