0

Timerオンにしたときに開始し、ToggleButtonオフにしたときにキャンセルしたいのですが。動作しますが、キャンセルしてやり直そうとするとエラーになります。問題はどこだ?コードは次のとおりです。

final ToggleButton btnLive = (ToggleButton)findViewById(R.id.live);
    btnLive.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (btnLive.isChecked()) {

                timer = new Timer();
                timer.schedule(timerTask, 5*1000, 5*1000);

            } else {

                timer.cancel();
                timer.purge();
                timer = null;

            }
        }
    });

編集:それはそのようにタイマーを呼び出すことで動作します:

timer.schedule(new TimerTask(){
                    private Runnable runnable = new Runnable() {
                        public void run() {
                            new Something().execute();
                        }
                    };
                    public void run() {
                        handler.post(runnable);
                    }
                }, 5*1000, 5*1000);

最初の方法が機能しない理由を説明していただけますか?範囲の問題ですか?

4

1 に答える 1

0

このタイプのコードを使用して確認してください。

Timer mTimer = new Timer();
mTimer.schedule(new TimerTask()
                {
                    @Override
                    public void run() {
                        runOnUiThread(new Runnable() {
                            public void run() {

                            }
                        });
                    }
                }, 5000, 500);
于 2012-05-24T09:56:03.580 に答える