Android studio线程

Android studio线程,第1张

第一步,你先获取进度条对象

 ProgressBar pb=new ProgressBar(getApplicationContext())//动态创建

// ProgressBar pb=findViewById(R.id.pb)//静态获取

第二步,你得先创建一个子线程,子线程直接设置进度条

Thread thread= new Thread(new Runnable() {

    @Override

    public void run() {

        for(int i=0i<100i++){

            final int finalI = i

            pb.setProgress(i)

        }

    }

})

第三步,你得建立与main主线程的通信,两种方式选其一,我选个最简单的,使用系统提供的runOnUiThread函数,传递你第一步创建的子线程,作为参数即可

runOnUiThread(thread)

大功告成!

——

还有一种handler的方法,你需要可以提~

最近遇到一个需求,定时任务的业务逻辑不会改变,但需要动态添加、移除定时任务,而且定时执行时间有可能随时改变,这可怎么实现呢?

首先,配置定时任务线程池;

第二步,建立任务,里面包含了定时任务需要实现的业务逻辑;

第三步,应用定时任务,包括添加、移除;

最后,运行入口程序,打开浏览器进行测试; 通过浏览器分别执行了localhost:8080/index/insert/1000/10、localhost:8080/index/insert/2000/20,也就是添加了两个任务,任务1000每10s执行一次,任务2000每20s执行一次;

执行 http://localhost:8080/index/remove/1000 ,把1000的任务移除掉,再看执行结果,只剩下任务2000,ok,动态添加、移除定时任务编码完成。

当然,这里为了测试,把管理任务的队列直接放到了Controller里,实际应用时应保持全局唯一。

最后总结

通过这个需求,我们又用到了一个类ThreadPoolTaskScheduler,它有别于ThreadPoolTaskExecutor类,有兴趣有时间的可以查看源码。

动态添加、移除定时任务的 *** 作流程,大致可以分为以下四个步骤:

1.建立一个定时任务线程池;

2.为定时任务线程池建立一个队列,来管理这些任务;

3.根据唯一标识,往定时任务线程池和队列里分别添加这个任务;

4.根据唯一标识,从定时任务线程池里取消一个任务,并从队列里移除这个任务。


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

原文地址: http://outofmemory.cn/bake/11948090.html

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

发表评论

登录后才能评论

评论列表(0条)

保存