当另一个重复任务完成时,android运行重复任务

当另一个重复任务完成时,android运行重复任务,第1张

概述我正在执行一个任务,该任务执行10秒钟,时间为1秒,没有延迟,另一个任务是在完成第一个任务时,执行30秒,时间为5秒.另外,按下按钮时,我需要取消两个任务.我不知道哪个是解决此问题的最佳方法.>我尝试了基本线程,但是会阻塞GUI直到两个任务都完成执行>我尝试了ExecutorServiceexe

我正在执行一个任务,该任务执行10秒钟,时间为1秒,没有延迟,另一个任务是在完成第一个任务时,执行30秒,时间为5秒.

另外,按下按钮时,我需要取消两个任务.

我不知道哪个是解决此问题的最佳方法.

>我尝试了基本线程,但是会阻塞GUI直到两个任务都完成
执行
>我尝试了ExecutorService executorService =
Executors.newSingleTheadExecutor()但在这种情况下
executor.submit(runnable)一个接一个地执行,但不执行
每个定期
>我以固定利率尝试了定期执行人,但是
预定执行器是异步的,我确实知道如何使用

executorService.scheduleAtFixedrate(runnable1, delay, period);      //and after finished to runexecutorService.scheduleAtFixedrate(runnable2, delay, period);

任何反馈表示赞赏.

最好的祝福,
奥雷利亚

解决方法:

您可以使用CountDownTimer类.我模拟了一个简单的演示.

我创建了几个Runnable任务来模拟VolumeUp和VolumeDown函数.

当timerUp启动时,它会在给定的时间内递增计数.完成timerUp计数后,在onFinish中启动timerDown.它倒计时.

public class TimerActivity extends AppCompatActivity {    private TextVIEw out;    int value = 0;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_timer);        out = (TextVIEw) findVIEwByID(R.ID.out);        setText(value);        timerUp.start();    }    CountDownTimer timerUp = new CountDownTimer(10000, 1000) {        @OverrIDe        public voID onTick(long millisUntilFinished) {            runnable1.run();        }        @OverrIDe        public voID onFinish() {            timerDown.start();        }    };    CountDownTimer timerDown = new CountDownTimer(10000, 1000) {        @OverrIDe        public voID onTick(long millisUntilFinished) {            runnable2.run();        }        @OverrIDe        public voID onFinish() {            Log.e("done", "onFinish");        }    };    private voID setText(final int value){        runOnUiThread(new Runnable() {            @OverrIDe            public voID run() {                out.setText(String.valueOf(value));            }        });    }    Runnable runnable1 = new Runnable() {        @OverrIDe        public voID run() {            value += 10;            setText(value);        }    };    Runnable runnable2 = new Runnable() {        @OverrIDe        public voID run() {            value -= 10;            setText(value);        }    };}

可以通过调用取消计时器,

timerUp.cancel();timerDown.cancel();

您可能需要稍微调整一下时间值.希望你能明白.祝好运. 总结

以上是内存溢出为你收集整理的当另一个重复任务完成时,android运行重复任务全部内容,希望文章能够帮你解决当另一个重复任务完成时,android运行重复任务所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1091094.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存