处理表盘中的时区变化

时间:2018-07-21 20:11:17

标签: android wear-os android-wear-2.0 watch-face-api

如果您查看模拟表盘的Google's example,您会发现他们正在使用BroadcastReceiver处理时区更改。

documentation中,它表示onTimeTick将由时区更改触发。每次调用onTimeTick时更新时区数据就足够了吗?

我看到的唯一问题是每次mCalendar.setTimeZone(TimeZone.getDefault());都会调用onTimeTick,但这不是繁琐的操作,因此我看不到任何问题。

1 个答案:

答案 0 :(得分:1)

我认为这个例子已经过时了。当我开始构建表盘时,如果您使用onTimeTick()方法,从配对设备上的“设置”更改了日期或时区。您必须注册BroadcastReceiver才能捕获这些事件。

我不确定何时停止这种情况,但是当前似乎与所有与更新时间,日期和时区有关的事件都被调用onTimeTick()

我们使用android.text.format.Time对象并在每次调用timezone时更新其onTimeTick()字段。

我想您可以通过仅对其进行更改来对其进行稍微优化。但是,就像您在问题中提到的那样,这并不是一项昂贵的操作。我怀疑这种变化是否会带来明显的改善。

更重要的是确保您不要运行处理时区更改的表盘代码,除非它实际上已更改。这将触发不必要(且昂贵)的重绘操作。