AppWidgetProviderInfo对象:
为App Widget提供元数据(描述数据的数据,如XML、关系型数据的表结构),包括布 局,更新频率等数据。这个对象被定义在XML文件当中;
AppWidgetProvider:
定义了App Widget的基本生命周期函数;
onUpdate:在到达指定的更新时间之后或者当用户向桌面添加App Widget时会调用该方法。
onDeleted:当App Widget被删除时,会调用该方法
onEnabled:当一个App Widget的实例第一次被创建时,会调用该方法。
onDisabled:当最后一个App Widget实例被删除后,会调用该方法。
onReceive:接收广播事件
添加一个App Widget基本步骤:
首先在res文件件下新建一个xml文件夹,在此文件夹下新建XML文件(example_appwidget_info.xml)为AppWidgetProviderInfo对象提供数据,xml文件关联了一个布 局文件(example_appwidget.xml),此布局文件就定义了在桌面上显示那些内容,如下:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="234dp"
android:minHeight="72dp"
android:updatePeriodMillis="86000000"
android:initialLayout="@layout/example_appwidget">
</appwidget-provider>
然后需要在AndroidManifest.xml中声明一个receiver,receiver如下:
<receiver android:name="ExampleAppWidgetProvider">
<intent-filter >
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/example_appwidget_info"/>
</receiver>
example_appwidget.xml内容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="first AppWidget"
android:background="#000000"/>
</LinearLayout>
声明一个ExampleAppWidgetProvider类继承自AppWidgetProvider,如下:
public class ExampleAppWidgetProvider extends AppWidgetProvider{
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
// TODO Auto-generated method stub
super.onDeleted(context, appWidgetIds);
}
@Override
public void onDisabled(Context context) {
// TODO Auto-generated method stub
super.onDisabled(context);
}
@Override
public void onEnabled(Context context) {
// TODO Auto-generated method stub
super.onEnabled(context);
}
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
super.onReceive(context, intent);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
// TODO Auto-generated method stub
super.onUpdate(context, appWidgetManager, appWidgetIds);
}