通过Handler去发送Message对象携带消息进行异步更新时间,因为Android4.0之后不能在主线程去更新ui,所以只能采用子线程或者异步任务方式去处理
private Handler mHandler=new Handler()
{
@Override
public void handleMessage (Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case GET_SYSTEM_TIME:
long time = System.currentTimeMillis();
final Calendar mCalendar = Calendar.getInstance();
mCalendar.setTimeInMillis(time);
if(0 ==mCalendar.get(Calendar.AM_PM))
{
int hour = mCalendar.get(Calendar.HOUR);
}else {
hours = String.valueOf(mCalendar.get(Calendar.HOUR) + 12);
minute = String.valueOf(mCalendar.get(Calendar.MINUTE));
seconds = String.valueOf(mCalendar.get(Calendar.SECOND));
}
mTime.setText(hours+":"+minute+":"+seconds);
break;
default:
break;
}
}
};
private Handler mHandler=new Handler()
{
@Override
public void handleMessage (Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case GET_SYSTEM_TIME:
long time = System.currentTimeMillis();
mTime.setText(
new SimpleDateFormat("HH:mm:ss")
.format(
new Date(System.currentTimeMillis())));
mTime.setText(sysTimeStr);
break;
default:
break;
}
}
};
一秒钟发一次消息并实时更新时间
public class GetTimeThread extends Thread{
@Override
public void run() {
do {
try {
Thread.sleep(1000);
Message msg = new Message();
msg.what = GET_SYSTEM_TIME;
mHandler.sendMessage(msg);
}catch (InterruptedException e) {
e.printStackTrace();
}
} while(true);
}
}
最后主Activity或者Fragment中调用
new GetTimeThread.start();就OK了!