下面文章着重进行介绍下什么是Android手机系统,在熟知Android手机系统之前,先让我们熟知下什么是Android?所谓的Android:Android 包括一个被 Android 系统中各种不同组件所使用的 C/C++ 库集。
正如前面提到的,AppWidgetProviderInfo类中的配置值是不变的,因为updateTimeMillis值就在这个类中。任何有AppWidgetProviderInfo的Widget实例,只要设置了这个值,Widget就会根据其频率更新。
没有办法修改它,因为这个应用程序应该让用户配置Widget中图片刷新的频率,因此你必须自动动手实现。Android手机系统是最常用的更新机制,因为它支持重复通知,这些通知是将被触发的简单的PendingIntent对象。
你可能会想你可以创建一个具有AppWidgetManager.ACTION_APPWIDGET_UPDATE的Intent对象,然后给特定的Widget标识符设置额外的值。接着你就可以通过调用AlarmManager的setRepeating()方法,采用调度机制反复地更新,遗憾的是,这种做法行不通。
Android手机系统反复使用Intents匹配行为和方案值,那些“额外的”值是不会拿去对比的。实际上,解决方案非常简单:首先为你的Widget定义一个方案,然后用它定义唯一的Intent实例。下面的代码片段显示如何实现这个目标:
在ImagesWidgetConfiguration Activity中你会发现前面的代码,manifest文件显示块处理这个特定的scheme。你也需要在AppWidgetProvider接口的onDeleted()方法内停止重复的警报。最后,当手机重启后,更新调度也必须重启。
在AppWidgetProvider的onReceive()方法内提供了一个简单的解决方案,首先,检查更新行为,如果它是一个更新。确保它不包含scheme值,如果它不是更新,那么调度AlarmManager 的PendingIntent不会触发这个行为,在这种情况下,检查每个Widget标识符是否有一个配置选项值。
如果没有,那么在配置Widget之前,你知道这个更新行为被接收到。但如果选项值有效,那么你知道可以调度PendingIntent,在onReceive()方法中你可以看到完整的逻辑实现。这个方案允许多个Widget同时显示,如图2所示。更新也可以以不同的频率进行,每个显示的图片是从图片集中随机选择的。
【编辑推荐】