欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android實(shí)現(xiàn)計(jì)時(shí)與倒計(jì)時(shí)的常用方法小結(jié)

 更新時(shí)間:2015年10月29日 14:21:12   作者:陽(yáng)光島主  
這篇文章主要介紹了Android實(shí)現(xiàn)計(jì)時(shí)與倒計(jì)時(shí)的常用方法,總結(jié)并對(duì)比分析了幾種常用計(jì)時(shí)方法的特點(diǎn),具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例總結(jié)了Android實(shí)現(xiàn)計(jì)時(shí)與倒計(jì)時(shí)的常用方法。分享給大家供大家參考,具體如下:

方法一

Timer與TimerTask(Java實(shí)現(xiàn))

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的改進(jìn)型)

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線(xiàn)程)

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(最簡(jiǎn)單型)

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

計(jì)時(shí)與倒計(jì)時(shí)

方法1,方法2和方法3,都是倒計(jì)時(shí)
方法4,方法5,都是計(jì)時(shí)
計(jì)時(shí)和倒計(jì)時(shí),都可使用上述方法實(shí)現(xiàn)(代碼稍加改動(dòng))

UI線(xiàn)程比較

方法1,方法2和方法3,都是在UI線(xiàn)程實(shí)現(xiàn)的計(jì)時(shí);
方法4和方法5,是另開(kāi)Runnable線(xiàn)程實(shí)現(xiàn)計(jì)時(shí)

實(shí)現(xiàn)方式比較

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

推薦使用

如果對(duì)UI線(xiàn)程交互要求不很高,可以選擇方法2和方法3
如果考慮到UI線(xiàn)程阻塞,嚴(yán)重影響到用戶(hù)體驗(yàn),推薦使用方法4,另起線(xiàn)程單獨(dú)用于計(jì)時(shí)和其它的邏輯處理
方法5,綜合了前幾種方法的優(yōu)點(diǎn),是最簡(jiǎn)的

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Android中Activity滑動(dòng)關(guān)閉的效果

    Android中Activity滑動(dòng)關(guān)閉的效果

    這篇文章主要介紹了Android中Activity滑動(dòng)關(guān)閉的效果,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-05-05
  • Android使用Rotate3dAnimation實(shí)現(xiàn)3D旋轉(zhuǎn)動(dòng)畫(huà)效果的實(shí)例代碼

    Android使用Rotate3dAnimation實(shí)現(xiàn)3D旋轉(zhuǎn)動(dòng)畫(huà)效果的實(shí)例代碼

    利用Android的ApiDemos的Rotate3dAnimation實(shí)現(xiàn)了個(gè)圖片3D旋轉(zhuǎn)的動(dòng)畫(huà),圍繞Y軸進(jìn)行旋轉(zhuǎn),還可以實(shí)現(xiàn)Z軸的縮放。點(diǎn)擊開(kāi)始按鈕開(kāi)始旋轉(zhuǎn),點(diǎn)擊結(jié)束按鈕停止旋轉(zhuǎn)。
    2018-05-05
  • Android仿支付寶密碼輸入效果封裝

    Android仿支付寶密碼輸入效果封裝

    這篇文章主要為大家詳細(xì)介紹了Android仿支付寶密碼輸入效果的封裝,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Flutter 如何封裝文本輸入框組件

    Flutter 如何封裝文本輸入框組件

    在實(shí)際開(kāi)發(fā)過(guò)程中,往往開(kāi)始是完成功能層面的開(kāi)發(fā),然而再考慮組件封裝和代碼優(yōu)化。當(dāng)然,組件封裝越早做越好,因?yàn)檫@樣會(huì)提高整個(gè)團(tuán)隊(duì)開(kāi)發(fā)的規(guī)范性和效率。本文將介紹如何封裝一個(gè)文本輸入框組件
    2021-06-06
  • Android中SeekBar拖動(dòng)條使用方法詳解

    Android中SeekBar拖動(dòng)條使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Android中SeekBar拖動(dòng)條使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • 詳解flutter中常用的container layout實(shí)例

    詳解flutter中常用的container layout實(shí)例

    這篇文章主要為大家介紹了詳解flutter中常用的container layout實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Android圖片壓縮幾種方式總結(jié)

    Android圖片壓縮幾種方式總結(jié)

    這篇文章主要介紹了Android圖片壓縮幾種方式總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Android媒體通知欄多系統(tǒng)適配實(shí)例講解

    Android媒體通知欄多系統(tǒng)適配實(shí)例講解

    對(duì)于Android來(lái)說(shuō)其中一項(xiàng)很方便的操作便是下拉菜單,下拉菜單欄可以快捷打開(kāi)某項(xiàng)設(shè)置,這篇文章主要給大家介紹了關(guān)于Android通知欄增加快捷開(kāi)關(guān)的功能實(shí)現(xiàn),需要的朋友可以參考下
    2023-04-04
  • Android學(xué)習(xí)筆記(二)之電話(huà)撥號(hào)器

    Android學(xué)習(xí)筆記(二)之電話(huà)撥號(hào)器

    目前手機(jī)市場(chǎng)上android已經(jīng)具有強(qiáng)大的霸主地位,吸引了很多的追棒者,android學(xué)習(xí)越來(lái)越火熱,本文給大家介紹android學(xué)習(xí)筆記(二)之電話(huà)撥號(hào)器,感興趣的朋友一起學(xué)習(xí)吧
    2015-11-11
  • Android開(kāi)發(fā)中MJRefresh自定義刷新動(dòng)畫(huà)效果

    Android開(kāi)發(fā)中MJRefresh自定義刷新動(dòng)畫(huà)效果

    本文給大家介紹了MJRefresh自定義刷新動(dòng)畫(huà)效果,包括常見(jiàn)用法等相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-11-11

最新評(píng)論