Widget是安卓的一个桌面小工具组件—窗口小部件,是微型应用程序视图,可以嵌入到其他应用程序(如主屏幕)和接收定期更新。
一 介绍
AppWidgetProvider是Android中提供的用于实现桌面小工具的类,其本质是一个广播,即BroadcastReceiver。下面是类的继承关系。
所以,在实际的使用中,把AppWidgetProvider当成一个BroadcastReceiver就可以了,这样许多功能就很好理解了。
二 开发一个桌面小工具的步骤
- 创建一个类继承 AppWidgetProvider 并重写相应方法 默认实现了onReceive 方法。
- 在清单文件进行注册。
- 在res目录下新建xml文件夹 配置widget相关信息。
- 创建widget展示布局。
- 创建widget的配置文件(可选)。
- 更新数据。
大概就是上述的一些步骤。如果在添加的widget之前需要进行一些配置 则需要实现第5步。
第一步:创建类继承AppWidgetProvider
public class MyWidget extends AppWidgetProvider {
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
}
/**
* 第一个widget被添加调用
* @param context
*/
@Override
public void onEnabled(Context context) {
super.onEnabled(context);
context.startService(new Intent(context, WidgetService.class));
}
/**
* widget被添加 || 更新时调用
* @param context
*/
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
context.startService(new Intent(context, WidgetService.class));
}
/**
* 最后一个widget被删除时调用
* @param context
*/
@Override
public void onDisabled(Context context) {
super.onDisabled(context);
context.stopService(new Intent(context, WidgetService.class));
}
/**
* widget被删除时调用
* @param context
* @param appWidgetIds
*/
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
super.onDeleted(context, appWidgetIds);
}
}
第二步:清单文件注册
<receiver android:name=".MyWidget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provi