精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-02-18
最后修改:2011-02-19
其实Android API开发指南中的App Widgets章节
已经说得很清楚了,下面只是对自己的理解进行一次梳理。 <?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="80dp" android:minHeight="32dp" android:updatePeriodMillis="86400000" android:initialLayout="@layout/widget_provider" android:configure="com.demo.widget.MyWidgetConfiguration" > </appwidget-provider>
3.
public class MyWidgetProvider extends AppWidgetProvider { static final String TAG = "widget"; /** * 更新 */ public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){ Log.i(TAG, "onUpdate"); } /** * 第一个Widget组件启动时触发 */ public void onEnabled(Context context){ Log.i(TAG, "onEnabled"); } /** * 最后一个Widget组件关闭时触发 */ public void onDisabled(Context context){ Log.i(TAG, "onDisabled"); } /** * 任一Widget组件被删除时触发 */ public void onDeleted(Context context, int[] appWidgetIds){ Log.i(TAG, "onDeleted"); } /** * 以上函数触发前会先触发该函数,一般不需要重写 */ public void onReceive(Context context, Intent intent){ Log.i(TAG, "onReceive"); super.onReceive(context, intent); } }
其中onUpdate顾名思义是对Widget进行更新的,前面定义的更新周期就是作用于该函数的。 public void onUpdate(Context context, AppWidgetMananger appWidgetManager, int[] appWidgetIds){ int N = appWidgetIds.length; // 可能启动了多个Widget,appWidgetIds记录了这些Widget的ID for(int i=0; i<N; i++){ RemoteViews views = new RemoteViews(getPackageName(), R.layout.widget_views); appWidgetManager.updateAppWidget(appWidgetIds[i], views); } } <receiver android:name="MyWidgetProvider"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action> </intent-filter> <meta-data android:resource="@xml/widget_property" android:name="android.appwidget.provider"></meta-data> </receiver>
5.
int mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); Intent resultValue = new Intent(); resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId); setResult(RESULT_OK, resultValue); 否则会导致退出Activity后Widget不启动。 <meta-data android:resource="@xml/<属性文件xml>" android:name="android.appwidget.provider"></meta-data> 4. 创建Coniguration Activity(注意处理好setResult),添加到属性文件中的Configure属性,在manifest中注册activity,添加一个 action为android.appwidget.action.APPWIDGET_CONFIGURE
的IntentFilter 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-02-25
|
|
返回顶楼 | |
发表时间:2011-03-02
写的很好。。很需要哈
|
|
返回顶楼 | |
发表时间:2011-03-08
学习,多谢分享
|
|
返回顶楼 | |
发表时间:2012-02-09
请问除了service,更新失效的问题解决了吗
|
|
返回顶楼 | |
浏览 9304 次