Android O:我们可以制作一个时钟小部件吗?
我们的应用程序中有一个时钟小部件。 小部件需要每分钟更新一次以显示正确的时间。Android O:我们可以制作一个时钟小部件吗?
在Android的O,则建议使用的jobscheduler后台更新。 不幸的是,有一些限制。
- JobService的定期更新无法在少于15分钟的间隔内调用。
- JobService.onStartJob()是不可预知的。我们可能会错过更新分钟数的准确时刻(第59秒)。
以前我们曾经使用Handler.postDelayed()来运行后台服务来更新小部件中的时间。 在O后台服务可以由系统终止。
你会如何建议实施的AndroidØ时钟小工具?
现在这甚至可能吗?
使用“TextClock”窗口小部件的控制,它是由远程视窗功能的支持,它通过它的自我更新的每一分钟,没有必要使用那些花哨的jobscheduler工作。
像这样的事情会做的伎俩:
<LinearLayout
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextClock
android:id="@+id/dateText"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:format12Hour="@string/date_text_format_12h"
android:format24Hour="@string/date_text_format_24h"
android:gravity="bottom|center_horizontal"
android:textColor="@android:color/black"
android:textSize="@dimen/date_text_size_default"/>
<TextClock
android:id="@+id/timeText"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:format12Hour="@string/time_text_format_12h"
android:format24Hour="@string/time_text_format_24h"
android:gravity="top|center_horizontal"
android:textColor="@android:color/black"
android:textSize="@dimen/time_text_size_default"
android:textStyle="bold"/>
</LinearLayout>
这是一个小部件;它不需要一直更新 - 只有当它可见时才会更新。为什么你想在你的小部件没有运行的时候浪费电池来跟踪当前时间?
当小部件变为可见,查找当前时间和绘制的时候了。另外,计算下一分钟的顶部时间,并将延迟消息或Runnable发布到将在此刻触发的处理程序。当该消息/ Runnable执行时,更新您的时间显示并在下一分钟的顶部重新发布消息/ Runnable。
你也应该注册,当当前时间改变时,报警管理送出Intent.ACTION_TIME_CHANGED
广播接收机;您需要重新计算您的显示时间以及下次更新何时响应该广播。
那么,什么事件触发时,小部件变得可见? –
据我所知,没有办法检测小部件变得可见的时刻。 – Pavel
任何想法,为什么我的问题是downvoted? – Pavel
尝试JobIntentService –
这是一个非常重要的问题。它不应该downvoted –