首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何停止定时器任务

如何停止定时器任务
EN

Stack Overflow用户
提问于 2016-02-23 23:15:37
回答 2查看 962关注 0票数 2

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

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

当我们处于另一个活动中时,如何停止定时器任务?

代码语言:javascript
复制
        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);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-23 23:24:31

代码语言:javascript
复制
       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);
票数 0
EN

Stack Overflow用户

发布于 2016-02-24 00:04:48

这可能不会直接回答您的问题,但是仅仅是反应性扩展是使用TimerTasks的一个很好的选择。检查

代码语言:javascript
复制
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.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35590170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档