package com.example.android_secondtimer;


import android.annotation.SuppressLint;
import android.os.Handler;
import android.os.Message;


public class MyTimer {
private int mHour = 0;
private int mMinute = 0;
private int mSecond = 0;
private int mMillions = 0;
private boolean THREAD_CONTINUE = true;
private long millisA;// 第一次获得系统时间
private long millis;// 系统时间差
private long delt;// 暂停时,经过的时间差


@SuppressLint("HandlerLeak")
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 1) {
millis = System.currentTimeMillis() - millisA;
}
}
};


public long getMillis() {
return millis;
}


public int getmHour() {
mHour = (int) (millis / 3600000);
return mHour;
}


public void setmHour(int mHour) {
this.mHour = mHour;
}


public int getmMinute() {
mMinute = (int) ((millis / 60000) % 60);
return mMinute;
}


public void setmMinute(int mMinute) {
this.mMinute = mMinute;
}


public int getmSecond() {
mSecond = (int) ((millis / 1000) % 60);
return mSecond;
}


public void setmSecond(int mSecond) {
this.mSecond = mSecond;
}


public int getmMillions() {
mMillions = (int) (millis % 1000);
return mMillions;
}


public void setmMillions(int mMillions) {
this.mMillions = mMillions;
}


public MyTimer() {
// TODO Auto-generated constructor stub
}


/**
* 开始计时
*/
public void startCount() {
THREAD_CONTINUE = true;


// 计算时间
millisA = System.currentTimeMillis();


mRunnable runnable = new mRunnable();
Thread mThread1 = new Thread(runnable);
mThread1.start();
}


/**
* 当按下stop时,如果再按下start,则继续计时
*/


public void continueCount() {
THREAD_CONTINUE = true;


mRunnable runnable = new mRunnable();
Thread mThread2 = new Thread(runnable);
mThread2.start();


millisA = System.currentTimeMillis() - delt;// 此时,millisA是一个时刻,重新计时的时刻
}


/**
* 暂停计时
*/
public void pauseCount() {


delt = System.currentTimeMillis() - millisA;// 从第一次start到stop经过的时间差,为continueCount准备;


THREAD_CONTINUE = false;
}


/**
* 停止计时,清空时间

* @author Gao

*/
public void stopCount() {


THREAD_CONTINUE = false;


mHour = 0;
mMinute = 0;
mSecond = 0;
mMillions = 0;
millis = 0;
}


public class mRunnable implements Runnable {


@Override
public void run() {
// TODO Auto-generated method stub
while (THREAD_CONTINUE) {
try {
Thread.sleep(1);
Message message = Message.obtain();
message.what = 1;
mHandler.sendMessage(message);
// }
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


}
}

更多相关文章

  1. Android几种定时器的使用
  2. 倒计时按钮
  3. Android(安卓)时间日期选择器
  4. Android一种欢迎界面全屏显示方法
  5. Android之时间戳的简单使用
  6. Android(安卓)ContentProvider 使用limit
  7. Android7.0修改时间服务器
  8. Android(安卓)自定义自由选择时间区间的日历控件
  9. Android(安卓)优化电池使用时间 ——监控电池电量和充电状态

随机推荐

  1. Android "多方向"抽屉
  2. Android实现录屏和截屏功能
  3. android:documentLaunchMode
  4. Android上安装lighttpd+php+mysql
  5. android中的EditView控件
  6. Android学习笔记_12_网络通信之从web获取
  7. Android 中的各种控件
  8. android通话记录的查询与删除
  9. Android GridView的使用方法
  10. Android 5.X新特性详解