You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安卓智能手表Activity实时时间显示问题:时间无法自动更新

实现安卓手表Activity顶部自动更新的时间显示

你的代码只在Activity初始化时获取并设置了一次时间,所以不会随时间流逝自动更新,需要定时触发时间刷新逻辑。以下是两种可行的实现方案:

方案一:Java语言用Handler定时刷新

  1. 先把布局里的EditText换成TextView(仅用于显示时间,无需编辑功能,更符合手表使用场景),设置id为tv_time
  2. 在Activity中实现定时刷新逻辑:
private TextView tvTime;
private Handler timeHandler;
private Runnable timeRunnable;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_activity_layout);
    
    tvTime = findViewById(R.id.tv_time);
    initTimeUpdate();
}

private void initTimeUpdate() {
    timeHandler = new Handler(Looper.getMainLooper());
    timeRunnable = new Runnable() {
        @Override
        public void run() {
            // 获取并格式化当前时间
            String currentTime = java.text.DateFormat.getTimeInstance().format(Calendar.getInstance().getTime());
            tvTime.setText(currentTime);
            // 每隔1秒触发一次刷新
            timeHandler.postDelayed(this, 1000);
        }
    };
    // 立即执行一次,避免启动后延迟显示时间
    timeHandler.post(timeRunnable);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    // 销毁Activity时停止定时任务,防止内存泄漏
    if (timeHandler != null && timeRunnable != null) {
        timeHandler.removeCallbacks(timeRunnable);
    }
}

方案二:Kotlin语言用协程实现

如果使用Kotlin开发Wear OS应用,协程的实现更简洁:

private lateinit var tvTime: TextView
private var timeUpdateJob: Job? = null

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.your_activity_layout)
    
    tvTime = findViewById(R.id.tv_time)
    startTimeUpdate()
}

private fun startTimeUpdate() {
    timeUpdateJob = lifecycleScope.launch {
        while (isActive) {
            val currentTime = DateFormat.getTimeInstance().format(Calendar.getInstance().time)
            tvTime.text = currentTime
            delay(1000)
        }
    }
}

override fun onDestroy() {
    super.onDestroy()
    // 取消协程任务,避免内存泄漏
    timeUpdateJob?.cancel()
}

额外注意事项

  • 布局适配:如果是圆形Wear OS手表,确保顶部时间控件适配圆形屏幕,可通过ConstraintLayout设置顶部对齐
  • 性能优化:手表资源有限,1秒刷新间隔足够满足时间显示需求,不要设置更短的刷新周期

内容的提问来源于stack exchange,提问作者lewis04

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 19:15:56