Android之监测database的改变--notifyChange
2015-09-09 15:52
746 查看
我们在ContentProvider的insert,update,delete等改变之后调用getContext().getContentResolver().notifyChange(uri, null);这样就通知那些监测databases变化的observer了,而你的observer可以在一个service里面注册。
以Downloadmanger为例子:
定义ContentObserver,并且在onChange里做你想做的事情。
Java代码
/**
* Receives notifications when the data in the content provider changes
*/
private class DownloadManagerContentObserver extends ContentObserver {
public DownloadManagerContentObserver() {
super(new Handler());
}
/**
* Receives notification when the data in the observed content
* provider changes.
*/
public void onChange(final boolean selfChange) {
if (Constants.LOGVV) {
Log.v(Constants.TAG, "Service ContentObserver received notification");
}
updateFromProvider();
}
}
在DownloadService的onCreate中注册:
Java代码
public void onCreate() {
super.onCreate();
if (Constants.LOGVV) {
Log.v(Constants.TAG, "Service onCreate");
}
mDownloads = Lists.newArrayList();
mObserver = new DownloadManagerContentObserver();
getContentResolver().registerContentObserver(Downloads.CONTENT_URI,
true, mObserver);
.....}
Java代码
/**
* Cleans up when the service is destroyed
*/
public void onDestroy() {
getContentResolver().unregisterContentObserver(mObserver);
if (Constants.LOGVV) {
Log.v(Constants.TAG, "Service onDestroy");
}
super.onDestroy();
}
可以参考以下文章:
http://hi.baidu.com/lck0502/blog/item/a818258f304b61e0f01f3691.html
以Downloadmanger为例子:
定义ContentObserver,并且在onChange里做你想做的事情。
Java代码
/**
* Receives notifications when the data in the content provider changes
*/
private class DownloadManagerContentObserver extends ContentObserver {
public DownloadManagerContentObserver() {
super(new Handler());
}
/**
* Receives notification when the data in the observed content
* provider changes.
*/
public void onChange(final boolean selfChange) {
if (Constants.LOGVV) {
Log.v(Constants.TAG, "Service ContentObserver received notification");
}
updateFromProvider();
}
}
在DownloadService的onCreate中注册:
Java代码
public void onCreate() {
super.onCreate();
if (Constants.LOGVV) {
Log.v(Constants.TAG, "Service onCreate");
}
mDownloads = Lists.newArrayList();
mObserver = new DownloadManagerContentObserver();
getContentResolver().registerContentObserver(Downloads.CONTENT_URI,
true, mObserver);
.....}
Java代码
/**
* Cleans up when the service is destroyed
*/
public void onDestroy() {
getContentResolver().unregisterContentObserver(mObserver);
if (Constants.LOGVV) {
Log.v(Constants.TAG, "Service onDestroy");
}
super.onDestroy();
}
可以参考以下文章:
http://hi.baidu.com/lck0502/blog/item/a818258f304b61e0f01f3691.html
相关文章推荐
- android Intent的FLAG_ACTIVITY_CLEAR_TOP跟FLAG_ACTIVITY_REORDER_TO_FRONT
- android:scaleType属性详解
- Android SurfaceView 实现Gif动画
- android两种签名
- 使用android camera调用自带的Intent时遇到的问题
- Android 稀奇古怪的问题
- Android sdk如何设置?
- android 数据存取——SharedPreferences
- Android Studio com.android.dex.DexException: Multiple dex files define(重复引用包)
- Android手机识别相关
- [转]Android的ADT与SDK的区别
- [转]Android中不被硬件加速支持的操作
- android电池管理系统从上层的java到底层驱动的调用(转载)
- Android学习之NDK环境的配置
- Android工程目录结构详解
- ANDROID自定义视图——onLayout源码 流程 思路详解
- Android-BroadCastReceiver
- Android权限标签uses-permission
- android studio 中去除应用标题栏
- android wifi讲解 wifi列表显示