怎么能停止计时器任务

时间:2016-02-23 23:15:38

标签: android timer handler timertask

我有一个计时器和计时器任务和处理程序并且可以运行 我的代码每10秒执行一次,直到ServerResponse变量为空,然后重定向到另一个活动。

但是当我的代码重定向到另一个活动计时器任务正在工作!!!!!

当我们在另一个活动中时如何停止计时器任务?

        Timer timer = new Timer();
        timer.schedule(new TimerTask() {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    new sendDataToServer().execute();
                    final Handler handler = new Handler();

                    handler.postDelayed(new Runnable() {

                        @Override
                        public void run() {
                            if(serverResponse.length() > 0)
                            {
                                Intent intent = new Intent(PayementActivity.this,UserFormActivity.class);
                                startActivity(intent);
                                finish();
                            }
                        }
                    }, 10000);
                }
            });
        }
    }, 0, 10000);

2 个答案:

答案 0 :(得分:0)

       Timer timer = new Timer();
        timer.schedule(new TimerTask() {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    new sendDataToServer().execute();
                    final Handler handler = new Handler();

                    handler.postDelayed(new Runnable() {

                        @Override
                        public void run() {
                            if(serverResponse.length() > 0)
                            {
                                Intent intent = new Intent(PayementActivity.this,UserFormActivity.class);
                                if(timer!= null) {
                                timer.cancel();
                                timer.purge();
                                timer= null;
    }
                                startActivity(intent);
                                finish();
                            }
                        }
                    }, 10000);
                }
            });
        }
    }, 0, 10000);

答案 1 :(得分:0)

这可能无法直接回答您的问题,但只是反应式扩展是使用TimerTasks的不错选择。检查thisthis

subscription = Observable.interval(10, TimeUnit.SECONDS)
                .subscribeOn(Schedulers.io())// Runs on a io thread pool
                .observeOn(AndroidSchedulers.mainThread()) // Observes on UI thread 
                .subscribe(timeCount ->{
                    // Your code here
                 });
subscription.unsubscribe();// Stops the stream.