0

我在android中的timerTask有问题我有这样的代码:

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

每次计时器任务启动时,我的应用程序都会崩溃,因为我正在访问 textview 并且它在另一个线程中,对吗?

如何解决这个问题?

4

2 回答 2

4

是的,你是对的,它崩溃了,因为你不是从 UI 线程访问视图。为了解决这个问题,您可以使用您的活动将 Runnable 发布到 UI 线程

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);
于 2012-04-13T07:13:15.693 回答
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);)属于 UI 线程的东西,这是不允许的......

于 2012-04-13T07:11:36.370 回答