当前位置:   article > 正文

Android实现定时循环、延时方式实现_android循环执行任务

android循环执行任务
一、定时循环

1. handler.postDelayed+Runnable

  • 首先创建一个Handler对象

Handler handler=new Handler();
  • 然后创建一个Runnable对象

  1. Runnable runnable=new Runnable(){
  2. @Override
  3. public void run(){
  4. // TODO Auto-generated method stub
  5. //要做的事情,这里再次调用此Runnable对象,以实现每两秒实现一次的定时器操作
  6. handler.postDelayed(this,2000);
  7.     }
  8. };
  • 主线程中调用,使用PostDelayed方法,两秒后调用此Runnable对象

handler.postDelayed(runnable,2000);
  • ★ 关闭此定时器,可以这样操作

handler.removeCallbacks(runnable);

2. handler+timer+timeTask

  • 首先创建一个Handler对象

  1. Handler handler =new Handler(){
  2. @Override
  3. public void handleMessage(Message msg){
  4. if(msg.what ==1){
  5. //do something
  6. }
  7. super.handleMessage(msg);
  8. }
  9. };
  • 然后创建一个Timer 对象

  1. Timer timer =new Timer();
  2. TimerTask timerTask =new TimerTask(){
  3. @Override
  4. public void run(){
  5. Message message =newMessage();
  6. message.what =1;
  7. handler.sendMessage(message);
  8. }
  9. };
  • 主线程中调用,使用schedule方法

  1. //延时1s,每隔500毫秒执行一次run方法
  2. timer.schedule(timerTask,1000,500);

3. Thread+handler

  • 首先创建一个Handler对象

  1. Handler handler =new Handler(){
  2. @Override
  3. public void handleMessage(Message msg){
  4. if(msg.what ==1){
  5. //do something
  6. }
  7. super.handleMessage(msg);
  8. }
  9. };
  • 然后创建一个Timer 对象

  1. class Schedule ThreadextendsThread{//这里也可用Runnable接口实现
  2. @Override public void run(){
  3. while(true){
  4. try{//每隔1s执行一次Thread.sleep(1000);Message msg =newMessage();
  5. msg.what =1;
  6. handler.sendMessage(msg);
  7. }catch(InterruptedException e){
  8. e.printStackTrace();}
  9. }
  10. }
  11. }
  • 主线程中调用

new Thread(new ScheduleThread()).start();

二、延时

1. Handler的postDelayed方法:

  1. new Handler().postDelayed(newRunnable(){
  2. @Override
  3. public void run(){//do something
  4. }
  5. },1000);//延时1s执行

2. Timer + TimerTask方法:

  1. timer =new Timer();
  2. timer.schedule(newTimerTask(){
  3. @Override
  4. public void run(){//do something
  5. }},1000);//延时1s执行

3. Thread方法:

  1. new Thread(new Runnable(){
  2. @Override
  3. public void run(){try{Thread.sleep(1000);//延时1s//do something
  4. }catch(InterruptedException e){
  5. e.printStackTrace();
  6. }}}).start();
  7. new Thread(new MyThread()).start();

参考链接:https://www.jianshu.com/p/ea39ffb0f060

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号