Android定时器实现定时执行、重复执行、定时重复执行、定次数执行的多种方式

发布时间:2019-08-08 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Android定时器实现定时执行、重复执行、定时重复执行、定次数执行的多种方式脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

Android定时器实现定时执行、重复执行、定时重复执行、定次数执行的多种方式

作用:

1、定时执行某种功能

2、重复执行、定时重复执行、定次数执行某种功能

类别:

1、 Thread(new Runnable)

2、Thread()

3、Timer

4、Handler

・・・・・

代码如下:

1、布局

 <&#63;XMl version="1.0" encoding="utf-8"?> <LinearLayout xMLns:andROId="http://schemas.android.COM/apk/res/android"   android:orientation="vertical" android:layout_width="match_parent"   android:layout_height="match_parent">   <Button     android:id="@+id/show_time"     android:text="请选择一种启动方式"     android:textSize="30dp"     android:layout_width="match_parent"     android:layout_height="100dp" />    <Button      android:id="@+id/timer_1"      android:textAllCaps="false"      android:text="定时方式1(Thread(new Runnable))"      android:layout_width="match_parent"      android:layout_height="wrap_content" />    <Button      android:id="@+id/timer_2"      android:text="定时方式2(Thread())             "      android:textAllCaps="false"      android:layout_width="match_parent"      android:layout_height="wrap_content" />    <Button      android:id="@+id/timer_3"      android:text="定时方式3(Timer)               "      android:textAllCaps="false"      android:layout_width="match_parent"      android:layout_height="wrap_content" />    <Button      android:id="@+id/timer_4"      android:text="定时方式4(Handler)             "      android:textAllCaps="false"      android:layout_width="match_parent"      android:layout_height="wrap_content" />     <Button      android:id="@+id/clear"      android:text="计时器清零                    "      android:layout_width="match_parent"      android:layout_height="wrap_content" />   <TextView     android:layout_margin="10dp"     android:text="方式3停止方式不同(因为Timer一旦被cancel之后就废了,只有重新构造一个)/n停止:1、开启3 2、点击停止 3、再点击方式3"     android:textAllCaps="false"     android:layout_width="match_parent"     android:layout_height="wrap_content" /> </LinearLayout>

2、实现定时功能

 package com.example.leixiansheng.mytimers; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivITy; import android.os.Bundle; import android.view.View; import android.widget.Button; import java.util.Timer; import java.util.TimerTask; public class MainActivity extends AppCompatActivity implements View.OnClickListener {   PRivate Button timer_1, timer_2, timer_3, timer_4,clear, showTime;   private Timer timer;   private TimerTask timerTask;   private int num = 0;    //计数值   private boolean fLOG = true;    //是否停止计时   private Handler handler = new Handler() {     @override     public void handleMessage(Message msg) {       suPEr.handleMessage(msg);       showTime.setText("点击我停止计时: " + msg.what);     }   };   //handler 方式定时循环   private Handler handlerTimer = new Handler() {     @Override     public void handleMessage(Message msg) {       super.handleMessage(msg);       if (flog) {         handlerTimer.sendEmptyMessageDelayed(num++, 1000);       }       showTime.setText("点击我停止计时: " + msg.what);       if(flog == false) {        flog = true;       }     }   };   @Override   protected void onCreate(Bundle savedInstancestate) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);     timer_1 = (Button) findViewById(R.id.timer_1);     timer_2 = (Button) findViewById(R.id.timer_2);     timer_3 = (Button) findViewById(R.id.timer_3);     timer_4 = (Button) findViewById(R.id.timer_4);     clear = (Button) findViewById(R.id.clear);     showTime = (Button) findViewById(R.id.show_time);     timer_1.setOnClickListener(this);     timer_2.setOnClickListener(this);     timer_3.setOnClickListener(this);     timer_4.setOnClickListener(this);     clear.setOnClickListener(this);     showTime.setOnClickListener(this);   }   @Override   public void onClick(View view) {     switch (view.getId()) {       case R.id.timer_1:         method_1();         break;       case R.id.timer_2:         method_2();         break;       case R.id.timer_3:         method_3();         break;       case R.id.timer_4:         method_4();         break;       case R.id.clear:         num = 0;         showTime.setText("请选择一种启动方式");         break;       case R.id.show_time:         flog = false;         break;     }   }   private void method_4() {       new Thread() {         @Override         public void run() {           super.run();           handlerTimer.sendEmptyMessage(num++);         }       }.start();   }   private void method_3() {     //Timer一旦被cancel之后就废了,只有重新构造一个。     if (flog == true) {       timer = new Timer();       timerTask = new TimerTask() {         @Override         public void run() {           handler.sendEmptyMessage(num++);         }       };       /**        * 第一个参数:任务        * 第二个参数:初始启动等待时间        * 第三个参数:时间间隔        */       timer.schedule(timerTask, 0, 1000);     } else {       timer.cancel();       // 一定设置为null,否则定时器不会被回收       timer = null;       flog = true;     }     //Timer 暂停重启有问题(待改进)     //Timer一旦被cancel之后就废了,只有重新构造一个。 //    if (flog == true) { //      timerTask = new TimerTask() { //        @Override //        public void run() { //          handler.sendEmptyMessage(num++); //        } //      }; //      /** //       * 第一个参数:任务 //       * 第二个参数:初始启动等待时间 //       * 第三个参数:时间间隔 //       */ //      timer.schedule(timerTask, 0, 1000); //    } else { //      timer.cancel(); //      flog = true; //    }   }   private void method_2() {     //new Thread().start();     new Thread() {       @Override       public void run() {         super.run();         while (flog) {           handler.sendEmptyMessage(num++);           try {             Thread.sleep(1000);           } catch (InterruptedException e) {             e.printStackTrace();           }         }       }     }.start();     flog = true;   }   private void method_1() { //    new Thread(new Runnable).start();     new Thread(new Runnable() {       @Override       public void run() {         while (flog) {           handler.sendEmptyMessage(num++);           try {             Thread.sleep(1000);           } catch (InterruptedException e) {             e.printStackTrace();           }         }       }     }).start();     flog = true;   } }

总结

android教程
脚本网站
android studio

脚本宝典总结

以上是脚本宝典为你收集整理的Android定时器实现定时执行、重复执行、定时重复执行、定次数执行的多种方式全部内容,希望文章能够帮你解决Android定时器实现定时执行、重复执行、定时重复执行、定次数执行的多种方式所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。