标签:
1.<meta-data>为组建提供名值对
<meta-data android:name="string"
android:resource="resource specification" android:value="string" />
可定义在<activity><activity-alias> <service><receiver>中
一个组件可包含任意多个<meta-data>.
当解析到<meta-data>节点,放入Bundle对象,赋给PackageItemInfo.metaData
ActivityInfo info = getPackageManager().getActivityInfo(new ComponentName(this, MyExcesizeActivity.class), PackageManager.GET_META_DATA);
Bundle bundle = info.metaData;
String name = bundle.getString("com.rytong");
<meta-data android:name="com.rytong" android:resource="@string/liyuejiao"></meta-data>
仅得到@string/liyuejiao的ID作为com.rytong的值
2 定义Widget(extends AppWidgetProvider)
当Widget被添加,删除时,根据<receive的<action android:name=”xx”,系统发出广播,
自己定义的广播接受者MyWidget(extends AppWidgetProvider)接受到广播,调用onEnabled(),onUpdate(),onDeleted(),onDisabled()。
<receiver android:name="ExampleAppWidgetProvider" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.appwidget.action.APPWIDGET_DELETED" />
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/example_appwidget_info" />
</receiver>
3 通过<meta-data> android.appwidget.provider这个固定的名字取得Widget的配置文件(指定各项属性)
res/xml/appwidget_info.xml
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="294dp"
android:minHeight="72dp"
android:updatePeriodMillis="86400000"
android:previewImage="@drawable/preview"
android:initialLayout="@layout/example_appwidget"
android:configure="com.example.android.ExampleAppWidgetConfigure"
android:resizeMode="horizontal|vertical">
</appwidget-provider>
**
android:updatePeriodMillis定时为广播接受者发送名为”android.appwidget.action.APPWIDGET_UPDATE”的发送广播
android1.5以后定为0,不需要定时发送更新广播
android:initialLayout指定默认显示界面
4 启动一个服务,在后台长时间运行,不断更新Widget
设为守护线程:当服务所在线程退出,守护线程也退出
当桌面上有多个Widget时,每一个Widget被删除时,调用onDeleted()
当最后一个Widget被删除时,调用onDeleted(),onDisabled()
在桌面无Widget时,也就是在最后一个Widget被删除时,在onDisabled()中停止服务。
标签:
原文地址:http://www.cnblogs.com/liyuejiao/p/4251731.html