Android, OPhone OS作为手机开发的后起之秀, 肯定不会错过这份蛋糕的分享,现在我们就以ANDROID SDK 里面自带的贪吃蛇作为例子, 去看看这个贪吃蛇是怎么去开发。
你可能会想你可以创建一个具有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所示。更新也可以以不同的频率进行,每个显示的图片是从图片集中随机选择的。
至此,你已经看到了如何在Android系统上创建一个基本的Widget,每个Widget实例按独立的方式调度,由用户自行配置。但App Widge框架不直接支持,因此需要自动动手编码实现。以后我将在此Widget基础上讲解如何从互联网上下载图片,以及如何直接在屏幕上控制图片,敬请期待吧!
【编辑推荐】