亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android實現計時與倒計時的常用方法小結

2020-04-11 11:20:32
字體:
來源:轉載
供稿:網友

本文實例總結了Android實現計時與倒計時的常用方法。分享給大家供大家參考,具體如下:

方法一

Timer與TimerTask(Java實現)

public class timerTask extends Activity{   private int recLen = 11;   private TextView txtView;   Timer timer = new Timer();   public void onCreate(Bundle savedInstanceState){     super.onCreate(savedInstanceState);     setContentView(R.layout.timertask);     txtView = (TextView)findViewById(R.id.txttime);     timer.schedule(task, 1000, 1000);    // timeTask   }     TimerTask task = new TimerTask() {     @Override     public void run() {       runOnUiThread(new Runnable() {   // UI thread         @Override         public void run() {           recLen--;           txtView.setText(""+recLen);           if(recLen < 0){             timer.cancel();             txtView.setVisibility(View.GONE);           }         }       });     }   }; }

方法二

TimerTask與Handler(不用Timer的改進型)

public class timerTask extends Activity{   private int recLen = 11;   private TextView txtView;   Timer timer = new Timer();   public void onCreate(Bundle savedInstanceState){     super.onCreate(savedInstanceState);     setContentView(R.layout.timertask);     txtView = (TextView)findViewById(R.id.txttime);     timer.schedule(task, 1000, 1000);    // timeTask   }     final Handler handler = new Handler(){     @Override     public void handleMessage(Message msg){       switch (msg.what) {       case 1:         txtView.setText(""+recLen);         if(recLen < 0){           timer.cancel();           txtView.setVisibility(View.GONE);         }       }     }   };   TimerTask task = new TimerTask() {     @Override     public void run() {       recLen--;       Message message = new Message();       message.what = 1;       handler.sendMessage(message);     }   }; }

方法三

Handler與Message(不用TimerTask)

public class timerTask extends Activity{   private int recLen = 11;   private TextView txtView;   public void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      setContentView(R.layout.timertask);      txtView = (TextView)findViewById(R.id.txttime);     Message message = handler.obtainMessage(1);   // Message     handler.sendMessageDelayed(message, 1000);   }    final Handler handler = new Handler(){     public void handleMessage(Message msg){     // handle message       switch (msg.what) {       case 1:         recLen--;         txtView.setText("" + recLen);         if(recLen > 0){           Message message = handler.obtainMessage(1);           handler.sendMessageDelayed(message, 1000);   // send message         }else{           txtView.setVisibility(View.GONE);         }       }       super.handleMessage(msg);     }   }; }

方法四

Handler與Thread(不占用UI線程)

public class timerTask extends Activity{   private int recLen = 0;   private TextView txtView;   public void onCreate(Bundle savedInstanceState){     super.onCreate(savedInstanceState);     setContentView(R.layout.timertask);     txtView = (TextView)findViewById(R.id.txttime);     new Thread(new MyThread()).start();     // start thread   }     final Handler handler = new Handler(){     // handle     public void handleMessage(Message msg){       switch (msg.what) {       case 1:         recLen++;         txtView.setText("" + recLen);       }       super.handleMessage(msg);     }   };   public class MyThread implements Runnable{   // thread     @Override     public void run(){       while(true){         try{           Thread.sleep(1000);   // sleep 1000ms           Message message = new Message();           message.what = 1;           handler.sendMessage(message);         }catch (Exception e) {         }       }     }   } }

方法五

Handler與Runnable(最簡單型)

public class timerTask extends Activity{   private int recLen = 0;   private TextView txtView;   public void onCreate(Bundle savedInstanceState){     super.onCreate(savedInstanceState);     setContentView(R.layout.timertask);     txtView = (TextView)findViewById(R.id.txttime);     handler.postDelayed(runnable, 1000);   }     Handler handler = new Handler();   Runnable runnable = new Runnable() {     @Override     public void run() {       recLen++;       txtView.setText("" + recLen);       handler.postDelayed(this, 1000);     }   }; }

計時與倒計時

方法1,方法2和方法3,都是倒計時
方法4,方法5,都是計時
計時和倒計時,都可使用上述方法實現(代碼稍加改動)

UI線程比較

方法1,方法2和方法3,都是在UI線程實現的計時;
方法4和方法5,是另開Runnable線程實現計時

實現方式比較

方法1,采用的是Java實現,即Timer和TimerTask方式;
其它四種方法,都采用了Handler消息處理

推薦使用

如果對UI線程交互要求不很高,可以選擇方法2和方法3
如果考慮到UI線程阻塞,嚴重影響到用戶體驗,推薦使用方法4,另起線程單獨用于計時和其它的邏輯處理
方法5,綜合了前幾種方法的優點,是最簡的

希望本文所述對大家Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美肥臀大乳一区二区免费视频| 日韩久久免费电影| 永久555www成人免费| 2024亚洲男人天堂| 久久亚洲成人精品| 亚洲香蕉av在线一区二区三区| 4p变态网欧美系列| 国产精品久久久久久久久久久久久| 国产欧美一区二区白浆黑人| 91精品中文在线| 久久中文久久字幕| 按摩亚洲人久久| 91精品国产综合久久香蕉最新版| 2019中文在线观看| 97欧美精品一区二区三区| 成人动漫网站在线观看| 韩国精品久久久999| 日韩在线激情视频| 国产精品男人的天堂| 国产+成+人+亚洲欧洲| 欧美性videos高清精品| 亚洲国产另类 国产精品国产免费| 91精品国产精品| 精品偷拍各种wc美女嘘嘘| 日韩精品免费一线在线观看| 国产精品亚洲第一区| 亚洲自拍小视频| 精品亚洲国产成av人片传媒| 欧美成人精品一区二区三区| 日本亚洲欧洲色α| 欧美激情亚洲另类| 欧美在线观看网址综合| 日韩av在线导航| 日本高清久久天堂| 欧美电影在线免费观看网站| 亚洲一区二区三区777| 久久久久久久久爱| 日韩一区二区三区xxxx| 欧美日韩一区免费| 日韩欧美精品免费在线| 国产精品麻豆va在线播放| 中文字幕视频在线免费欧美日韩综合在线看| 国产一区二区三区精品久久久| 日韩久久精品成人| 日韩欧美在线中文字幕| 欧美风情在线观看| 国产精品电影观看| 2019亚洲男人天堂| 午夜精品在线视频| 欧美成人午夜免费视在线看片| 欧美精品videofree1080p| 5278欧美一区二区三区| 国产精品揄拍一区二区| 亚洲免费小视频| 久久久久久久国产精品| 国产亚洲精品久久久久久| 欧美国产日韩中文字幕在线| 日本不卡高字幕在线2019| 欧洲亚洲妇女av| 国产精品视频在线播放| 欧美国产高跟鞋裸体秀xxxhd| 国产精品日韩欧美| 欧美激情三级免费| 欧美巨大黑人极品精男| 欧美国产日韩免费| 久久久久久久国产精品视频| 国产日本欧美一区二区三区在线| 高清在线视频日韩欧美| 欧美电影免费在线观看| 亚洲www永久成人夜色| 国产精品白嫩初高中害羞小美女| 主播福利视频一区| 九九热这里只有精品6| 欧美激情一区二区三区高清视频| 国产精品自在线| 日韩av影视在线| 91久久精品久久国产性色也91| 欧美成人精品在线视频| 日韩在线观看电影| 日韩中文在线中文网三级| 成人写真福利网| 亚洲色在线视频| 国产精品中文字幕在线观看| 欧美重口另类videos人妖| 欧美中文字幕在线| 91精品国产综合久久香蕉的用户体验| 国内揄拍国内精品少妇国语| 日韩最新中文字幕电影免费看| 精品国产美女在线| 国产精品第二页| 亚洲另类激情图| 国产精品免费小视频| 成人黄色在线播放| 欧美性xxxx| 青青青国产精品一区二区| 久久成年人免费电影| 亚洲香蕉成视频在线观看| 亚洲欧美日韩精品久久| 黑人巨大精品欧美一区二区一视频| 国产成人精品av| 日韩国产一区三区| 不卡在线观看电视剧完整版| 亚洲免费小视频| 秋霞午夜一区二区| 国产精品女人网站| 久久人人爽人人爽爽久久| 国产精品视频白浆免费视频| 国产成人一区二区| 欧美老少做受xxxx高潮| 在线亚洲国产精品网| 亚洲精品一区中文字幕乱码| 69精品小视频| 欧美精品在线观看91| 久久久久久这里只有精品| 在线观看成人黄色| 欧美富婆性猛交| 麻豆国产va免费精品高清在线| 欧美日韩电影在线观看| 91国产视频在线| 久久国产精品视频| 琪琪第一精品导航| 日韩av网站电影| 92国产精品久久久久首页| 美女av一区二区三区| 日韩成人在线播放| 久久久97精品| 福利二区91精品bt7086| 成人日韩在线电影| 久久精品人人做人人爽| 欧美麻豆久久久久久中文| 日韩电影免费在线观看| 国产一区二区三区18| 日韩欧美a级成人黄色| 欧美激情亚洲国产| 日韩av第一页| 正在播放欧美一区| 亚洲va国产va天堂va久久| 色噜噜狠狠色综合网图区| 2019国产精品自在线拍国产不卡| 91精品啪在线观看麻豆免费| 深夜福利一区二区| 欧美野外猛男的大粗鳮| 久久精品成人一区二区三区| 精品国产乱码久久久久久婷婷| 久久久久www| 日韩av观看网址| 精品日本高清在线播放| 成人免费视频网址| 国产精品第100页| 国产成人精品电影久久久| 久久久av亚洲男天堂| 久久99国产精品自在自在app| 91沈先生作品| 欧美高清一级大片| 成人免费观看a| 久久777国产线看观看精品| 国产精品嫩草影院一区二区| 九九久久精品一区| 亚洲午夜国产成人av电影男同| 中文字幕亚洲欧美一区二区三区| 成人免费视频网址| 欧美大尺度电影在线观看| 精品视频中文字幕| 精品国产欧美一区二区五十路|