-1

如果您查看Google 的模拟表盘示例,您会发现他们正在使用BroadcastReceiver.

文档中,它说这onTimeTick将由时区更改触发。每次onTimeTick调用时只更新时区数据就足够了吗?

我看到的唯一问题是mCalendar.setTimeZone(TimeZone.getDefault());每次调用都会onTimeTick调用它,但这不是繁重的操作,所以我真的没有看到任何问题。

4

1 回答 1

1

我认为这个例子已经过时了。当我开始构建表盘时,onTimeTick()如果您从配对设备的设置中更改日期或时区,则不会调用该方法。你必须注册一个BroadcastReceiver来捕捉这些事件。

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

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

我想你可以通过仅在它发生变化时设置它来稍微优化它。但是,就像您在问题中提到的那样,这不是一项昂贵的操作。我怀疑这种变化会带来明显的改善。

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

于 2018-07-25T21:57:34.060 回答