APPWIDGET之路

对于AppWidget,是通过RemoteView,使用PendingIntent进延迟启动的方式来绑定需要启动的应用,基本的使用方式可以参考http://www.cnblogs.com/qianlifeng/archive/2011/03/26/1996407.html的博客,介绍了布局的建立,关联,初步使用方式。

这种使用方式满足基本的简单APPWIDGET控件的使用方式,当小部件需要使用到较复杂的控件,如ListView,GroupView等需要使用Adapter的控件时,就需要比较复杂的构造方式了,具体实现参考:http://jingpin.jikexueyuan.com/article/55759.html


这里要注意:

1、onReceive():这个方法有两个作用,一是处理自定义的ACTION事件(可选),二是处理APPWIDGET控件的回调事 件(必选,从AppWidgetProvider中可以看出,onUpdate, onDelete等回调方法都是从onReceive方法进行分发事件),所以在继承的应用的各自AppWidgetProvider中的onReveive方法中都有调用

else supe.onReceive();


2、构造AppWidget控件的初始化,PengdingIntent的过程一般放在onUpdate方法中进行,是因为这个方法只有在Launcher中实例小部件的时候由onReceive进行分发的时候执行一次。


3、对一般的简单AppWidget,使用的remoteViews.setOnClickPendingIntent(),进行注册响应事件;

对复杂的AppWidget,使用的remoteViews.setPendingIntentTemplate(),同时在RemoteViewsService的子类方 法getViewAt()方法中,对list-item再用remoteViews.setOnClickFillInIntent()进行注册一次。


4、对于ListView的数据更新,需要在数据发生变化的时候进行广播,这样就可以在onReceive方法中进行捕获事件进 行处理,调用appWidgetManager.notifyAppWidgetViewDataChanged(),再回调RemoteViewsService的 onDataSetChanged方法,在这个方法里进行相关的数据查询,处理,更新UI时可以采用系统 API: mAppWidgetManager.partiallyUpdateAppWidget(),这时就可以将数据更新到UI上。


具体的例子可以参照Android6.0的Messaging中的小部件。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值