当前位置:   article > 正文

Android studio日历与时钟,秒级更新_android studio时钟

android studio时钟
  1. package com.example.scm;
  2. import android.annotation.SuppressLint;
  3. import android.widget.TextView;
  4. import java.text.SimpleDateFormat;
  5. import java.util.Date;
  6. import static android.os.SystemClock.sleep;
  7. public class CalendarTime {
  8. @SuppressLint("SimpleDateFormat")
  9. public static SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  10. public static Date date;
  11. public static String dayandtime=simpleDateFormat.format(date);
  12. public static TextView TitleTimeText;
  13. //使用前请绑定控件
  14. //TitleTimeText = findViewById(R.id.title_2_time);
  15. public CalendarTime() {
  16. new Thread(() -> {
  17. while (true) {
  18. CalendarTime.date=new Date(System.currentTimeMillis());
  19. dayandtime=simpleDateFormat.format(date);
  20. //1 TitleTimeText.setText(CalendarTime.dayandtime);
  21. sleep(1000);
  22. }
  23. }).start();
  24. }
  25. }

思路:1个秒级更新线程,获取和显示每秒一次,达到秒级更新。

2.使用比较灵活,可以直接主程序将线程一块copy过去就行,然后绑定控件,写控件都在线程完成。

3.子线程中更新UI是不安全 的,所以待改为线程间通信,让UI线程去处理界面UI的更新。当然,android studio中它还是可以运行的,但是会报线程不安全异常。应该改为:

  1. package com.example.scm;
  2. import android.annotation.SuppressLint;
  3. import android.widget.TextView;
  4. import java.text.SimpleDateFormat;
  5. import java.util.Date;
  6. import static android.os.SystemClock.sleep;
  7. public class CalendarTime {
  8. @SuppressLint("SimpleDateFormat")
  9. public static SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  10. public static Date date;
  11. public static String dayandtime=simpleDateFormat.format(date);
  12. //public static TextView TitleTimeText;
  13. //使用前请绑定控件
  14. //TitleTimeText = findViewById(R.id.title_2_time);
  15. public CalendarTime() {
  16. new Thread(() -> {
  17. while (true) {
  18. CalendarTime.date=new Date(System.currentTimeMillis());
  19. dayandtime=simpleDateFormat.format(date);
  20.     Message msg=new Message();
  21. msg.arg1=0x1000;
  22. //msg.obj=dayandtime;
  23. if(MainActivity.handle!=null)
  24. MainActivity.handle.sendMessage(msg);
  25. //1 TitleTimeText.setText(CalendarTime.dayandtime);
  26. sleep(1000);
  27. }
  28. }).start();
  29. }
  30. }

主mainactivity中收:

  1. CalendarTime calendartime=new CalendarTime();//启动日历时间对象像线程
  2. Handler handle=new Handler(){
  3. public void handleMessage(Message msg){
  4. if(msg.arg1==0x1000)
  5. textview.setText(CalendarTime.dayandtime);//接收设置数据
  6. }
  7. }
  8. 如果handle里面的数据太多,可以标注为弱参数,让GC及时处理。

这样就没有隐患了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/594071
推荐阅读
相关标签
  

闽ICP备14008679号