赞
踩
相比FileObserver的繁琐,ContentObserver在易用性上还是要优秀一些的,因此我们可以在有监听需求的时候选用一下,一个功能多一种实现方式,就多了一个比较嘛。
ContentObserver顾名思义,就是内容观察器的意思,跟FileObserver很像,只不过前者是监听数据库的变化。
这里我们就拿图库监听做一个例子:
在做之前先给出图库相对的数据库的Uri:
MediaStore.Images.Media.EXTERNAL_CONTENT_URI
这个Uri很关键,它指向我们需要监听的图片库的数据库,还有很多Uri,有兴趣的可以去查一下,这里就不做延伸了。
跟FileObserver一样,ContentObserver也是一个抽象类,需要我们来继承实现因此第一步就是实现自己的内容查看器:
public class ScreenshotContentObserver extends ContentObserver {
private Context mContext;
private Handler mHandler;
public ScreenshotContentObsetver(Context context, Handler handler) {
super(handler);
mContext = context;
mHandler = handler; //最好将主线程的handler传递过来,这样方便通信和更新UI
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。