项目中用绑定手机号功能,发送之后2分钟倒计时。
倒计时的功能用到了CountDownTimer类,这是android的一个工具类。很巧妙

下面是这个类的原理解析,此类比较简单。但很强大。


package com.example.democountdowntheory;import android.os.Handler;import android.os.Message;import android.os.SystemClock;public abstract class MyCountDownTimer {/*原理: * 随时用SystemClock.elapsedRealtime()获取时间,使用这个时间来精确倒计时的数值 * 其他比较简单看看就明白了 * */private static final int MSG = 1;private long mSetTotalTime;// 总的时间120000,120秒private long mSetDownValue;// 减少的值1000,1秒public MyCountDownTimer(long totalTime, long downValue) {this.mSetTotalTime = totalTime;this.mSetDownValue = downValue;}/** * 启动 */public final synchronized MyCountDownTimer  start() {if (mSetTotalTime <= 0) {onFinish();return this;}mStartTime = SystemClock.elapsedRealtime() + mSetTotalTime;// 开始的时间+开机到现在的时间mHandler.sendMessage(mHandler.obtainMessage(MSG));return this;};/** * 变化的值 */public abstract void onTick(long remain);public void cancel() {mHandler.removeMessages(MSG);}/** * 结束之后 */public abstract void onFinish();private Handler mHandler = new Handler() {public void handleMessage(Message msg) {synchronized (MyCountDownTimer.this) {long remain = mStartTime - SystemClock.elapsedRealtime();// 减少后,剩余的时间。if (remain <= 0) {onFinish();// 完成} else if (mSetTotalTime < mSetDownValue) {// 设置的值<down减少的值sendMessageDelayed(obtainMessage(MSG), remain);} else {// 减少操作long pre = SystemClock.elapsedRealtime();onTick(remain);// 将值回调,供用户使用long delay = pre + mSetDownValue- SystemClock.elapsedRealtime();while (delay < 0) {delay += mSetDownValue;}sendMessageDelayed(obtainMessage(MSG), delay);}}};};private long mStartTime;}
Android demo倒计时原理(CountDownTimer原理)_第1张图片
demo地址:http://download.csdn.net/detail/pangzaifei/7006651

更多相关文章

  1. Android实现发送短信功能实例详解
  2. Android中拍照、图片、录音、视频和音频功能的方法和代码
  3. Android 复制和粘贴功能
  4. android版本更新功能
  5. android进行录音功能并保存播放
  6. Android第五个功能:文件存储到SDCard上面
  7. Android亮灭屏功能实现
  8. android模仿铃声选择功能
  9. 利用第三方jar包jaudiotagger实现与MediaMetadataRetriever类似

随机推荐

  1. An_ListView 多样展示
  2. Android: Android(安卓)NDK Overview
  3. Android代码混淆官方实现方法
  4. android应用开发实战
  5. Android(安卓)短信发送器
  6. Android多媒体开发(3)————使用Android(
  7. Eclipse Indigo - Cannot install Androi
  8. android之蓝牙设备的使用01
  9. Android(安卓)HttpURLConnection网络通信
  10. android:maxLines="1"截取显示不全,用andr