如果您查看模拟表盘的Google's example,您会发现他们正在使用BroadcastReceiver
处理时区更改。
在documentation中,它表示onTimeTick
将由时区更改触发。每次调用onTimeTick
时更新时区数据就足够了吗?
我看到的唯一问题是每次mCalendar.setTimeZone(TimeZone.getDefault());
都会调用onTimeTick
,但这不是繁琐的操作,因此我看不到任何问题。
答案 0 :(得分:1)
我认为这个例子已经过时了。当我开始构建表盘时,如果您使用onTimeTick()
方法,从配对设备上的“设置”更改了日期或时区。您必须注册BroadcastReceiver
才能捕获这些事件。
我不确定何时停止这种情况,但是当前似乎与所有与更新时间,日期和时区有关的事件都被调用onTimeTick()
。
我们使用android.text.format.Time
对象并在每次调用timezone
时更新其onTimeTick()
字段。
我想您可以通过仅对其进行更改来对其进行稍微优化。但是,就像您在问题中提到的那样,这并不是一项昂贵的操作。我怀疑这种变化是否会带来明显的改善。
更重要的是确保您不要运行处理时区更改的表盘代码,除非它实际上已更改。这将触发不必要(且昂贵)的重绘操作。