Android开发之--实时更新系统时间

时间:2022-07-31 09:00:03


     时间表一样,将系统时间实时更新显示在TextView中


   布局  一个TextView

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.jn.excerseproject.MainActivity">

<TextView
android:id="@+id/tvTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="" />
</RelativeLayout>

主Activity:

public class MainActivity extends AppCompatActivity {
@Bind(R.id.tvTime)
TextView tvTime;

public static final int MSG_ONE = 1;

private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//通过消息的内容msg.what 分别更新ui
switch (msg.what) {
case MSG_ONE:
//获取到系统当前时间 long类型
long time = System.currentTimeMillis();
//将long类型的时间转换成日历格式
Date data = new Date(time);
// 转换格式,年月日时分秒 星期 的格式
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 EEE");
//显示在textview上,通过转换格式
tvTime.setText(simpleDateFormat.format(data));
break;
default:
break;
}
}
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
new TimeThread().start();
}

//开一个线程继承Thread
public class TimeThread extends Thread {
//重写run方法
@Override
public void run() {
super.run();
// do-while 一 什么什么 就
do {
try {
//每隔一秒 发送一次消息
Thread.sleep(1000);
Message msg = new Message();
//消息内容 为MSG_ONE
msg.what = MSG_ONE;
//发送
handler.sendMessage(msg);
} catch (InterruptedException e) {
e.printStackTrace();
}
} while (true);
}
}
}