App Widget知识
实际采用了广播机制,桌面的App Widget控件发出广播,然后我们的AppWidgetProvider对象接收广播做出相应的操作
但是注意:应用程和桌面的App Widget控件是运行在两个进程中的!!!!
注意App Widgets文档中的一句话:
The AppWidgetManager automatically sends all other App Widget broadcasts to the AppWidgetProvider as necessary.
1 AppWidgetProviderInfo为App Widget提供信息.包括元数据(描述数据的数据),布局,更新频率等数据.
这个对象被定义在XML文件中,而不是由程序员操作的
注意App Widgets文档中的一句话:
The AppWidgetProvider class extends BroadcastReceiver as a convenience class to handle the App Widget broadcasts.
2 AppWidgetProvider定义了App Widget基本生命周期函数
onDeleted()和onDisabled()和onEnabled()和onUpdate().
除了这四个生命周期方法以外还有一个非常重要的方法和onReceive()
AppWidgetProvider本质上是一个广播接收者,所以亦要在清单文件中声明一个receiver
onDeleted()和onDisabled()和onEnabled()和onUpdate()发出广播
其中onReceive()接收广播事件,由接收到不同的广播事件(即各的Intent中的action)而决定调用哪些业务方法也可以
调用其余的四个中的哪一个方法即onDeleted()和onDisabled()和onEnabled()和onUpdate()由onReceive()调用
pendingIntent "悬而未决的Intent"
pendingIntent相当于是一个内含着Intent的包裹.
进程A发送一个pendingIntent给进程B,当某种事件发生的时候,pendingIntent里所包裹的Intent开始执行
创建pendingIntent的方法:
getActivity(Context, int, Intent, int),用于启动一个Activity
getBroadcast(Context, int, Intent, int),用于发送一个广播
getService(Context, int, Intent, int),用于启动一个服务
RemoteViews
RemoteViews对象表示了一系列的View对象,而且该对象运行在另外的进程当中.如此处的桌面App Widget控件中的图片,按钮,复选框等组件