国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android定時器實現定時執行、重復執行、定時重復執行、定次數執行的多種方式

2019-10-21 21:33:58
字體:
來源:轉載
供稿:網友

Android,定時器,定時執行,重復執行,定時重復執行,定次數執行

作用:

1、定時執行某種功能

2、重復執行、定時重復執行、定次數執行某種功能

類別:

1、 Thread(new Runnable)

2、Thread()

3、Timer

4、Handler

·····

代碼如下:

1、布局

<?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;  }}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 福建省| 克拉玛依市| 博白县| 宜阳县| 闸北区| 巧家县| 阿拉善右旗| 科尔| 富民县| 乌什县| 易门县| 广丰县| 麦盖提县| 普定县| 双辽市| 横山县| 吉首市| 宁陵县| 班玛县| 辛集市| 卓资县| 遂昌县| 宣城市| 利津县| 郁南县| 宁明县| 高雄市| 烟台市| 文安县| 平塘县| 沅陵县| 兴城市| 荔波县| 清流县| 敦煌市| 南陵县| 砀山县| 儋州市| 南丰县| 肥东县| 通道|