倒计时、定时器的七种方式,有这篇就够了

阅读: 评论:0

倒计时、定时器的七种方式,有这篇就够了

倒计时、定时器的七种方式,有这篇就够了

倒计时、定时器的使用次数也不少,这篇文章做一个总结,不用每次需要的时候到处去百度了,本文章内的代码都经过本人亲测有效!
注意每次使用定时器的时候在不需要的时候都要及时取消掉,不要让不需要的定时器拖垮应用

方式一:

new Handler().postDelayed(new Runnable() {@Overridepublic void run() {//十秒之后在这进行操作}},10000);

方式二:

//View线程实现延迟处理,内部基本与方式一一样,只不过Handler由视图提供
// mView 是我们的控件mView.postDelayed(new Runnable() {@Overridepublic void run() {//三秒之后走这里}},3000);

方式三:

//别忘了 onDestroy() 内进行销毁,防止内存溢出
//第一个参数是总共多长时间,第二个参数是频率时间CountDownTimer countDownTimer = new CountDownTimer(10000, 1000){@Overridepublic void onTick(long millisUntilFinished) {//  每刷新一次都走一次这里//  millisUntilFinished/1000 这是秒}@Overridepublic void onFinish() {//字面意思,倒计时结束时走这里}};countDownTimer.start();//开启刷新countDownTimer.cancel();//取消刷新

方式四:

//定时器Timer timer = new Timer();TimerTask timerTask = new TimerTask() {@Overridepublic void run() {runOnUiThread(new Runnable() {@Overridepublic void run() {//每次刷新再次操作}});}};timer.schedule(timerTask,0,1000);//开启刷新,第二个参数是多长时间之后开始倒计时,第三个参数是多长时间进行一次timer.cancel();//取消定时器

方式五:

    int time = 10;Handler mHandler = new Handler();Runnable myRunnale = new Runnable() {@Overridepublic void run() {time--;if(time>0){//每次刷新走这里}else{//倒计时结束走这里}}};mHandler.post(myRunnale);//开始倒计时mHandler.postDelayed(myRunnale,1000); //延迟倒计时veCallbacks(myRunnale); //移除倒计时

方式六:

使用 rxjava

首先导入依赖

implementation &#java3:rxjava:3.0.4'     

使用

    //定时器private var mVideoDuration: Disposable? = nullclearData()//第一个参数是多长时间开始,第二个参数是间隔时间,第三个参数是单位,可以是秒,分钟,小时,天mVideoDuration = ObservableTake.interval(0, 1, TimeUnit.SECONDS).observeOn(AndroidSchedulers.mainThread()).subscribe({//每次倒计时走这里   }, {})/*** 清除定时器*/fun clearData() {if (mVideoDuration != null) {mVideoDuration!!.dispose()}}     

方式七(不推荐):

int stopTime = 10;
new Thread(new Runnable() {@Overridepublic void run() {while(true){if (stopTime > 0){//主线程操作数据runOnUiThread(new Runnable() {@Overridepublic void run() {//每次刷新走这里}});stopTime--;}else {//倒计时操作}try{Thread.sleep(1000);}catch (Exception e) {e.printStackTrace();}}}}).start();

最后赠送一个双击退出的代码:

private Long finishTime  = 0L
if (System.currentTimeMillis() - finishTime > 1500) {Toast.makeText(getBaseContext(),"再按一次退出程序",Toast.LENGTH_SHORT).show();finishTime = System.currentTimeMillis();} else {Toast.makeText(getBaseContext(),"我退出了",Toast.LENGTH_SHORT).show();}

本文发布于:2024-01-31 18:59:21,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170669876230661.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:定时器   这篇   七种   倒计时   方式
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23