今天小博老师带你们了解一下Android窗口小部件App Widget。html
App Widget是应用程序窗口小部件,是微型的应用程序视图。能够被嵌入到其余应用程序中并接收周期性的更新。android
AppWidgetProvider继承自BroadcastReceiver,它能接收widget相关的广播,例如 widget 的更新、删除、开启和禁用等。app
AppWidgetProviderInfo描述一个App Widget元数据,好比App Widget的布局,更新频率,以及AppWidgetProvider 类。这个应该在XML里定义。ide
默认状况下(即不设置android:widgetCategory属性),Android是将widget添加到 home screen 中。
但在Android 4.2中,若用户但愿 widget 能够被添加到lock screen中,能够经过设置 widget 的 android:widgetCategory 属性包含keyguard来完成。布局
当你把 widget 添加到lock screen中时,你可能对它进行定制化操做,以区别于添加到home screen中的状况。 你可以经过 getAppWidgetOptions() 来进行判断 widget 是被添加到lock screen中,仍是home screen中。经过 getApplicationOptions() 获取 Bundle对象,而后读取 Bundle 的OPTION_APPWIDGET_HOST_CATEGORY值:若值为 WIDGET_CATEGORY_HOME_SCREEN, 则表示该 widget 被添加到home screen中; 若值为 WIDGET_CATEGORY_KEYGUARD,则表示该 widget 被添加到lock screen中。code
另外,你应该为添加到lock screen中的 widget 单独使用一个layout,能够经过 android:initialKeyguardLayout 来指定。而 widget 添加到home screen中的layout则能够经过 android:initialLayout 来指定。htm