0

私はAndroidのtimerTaskに問題があります私はこのようなコードを持っています:

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

タイマータスクが起動するたびに、アプリがクラッシュしました。テキストビューにアクセスしていて、別のスレッドにあるからです。

これを解決する方法は?

4

2 に答える 2

4

はい、その通りです。UIスレッドではなく、ビューにアクセスしているためにクラッシュします。これを解決するために、アクティビティを使用してRunnabletoUIスレッドを投稿できます

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 に答える