Android registerContentObserver 接口监视数据库变化
以launcher app为例说明,此功能的核心是ContentResolver 的notifyChange?和?registerContentObserver接口?。
?
Launcher.java 的一个方法(在onCreate方法里调用),这里即是为要监视的对象注册Observer。我这里讨论如何监视数据库里数据的变化,所以要监视的对象自 然是数据库了, LauncherSettings.Favorites.CONTENT_URI 指向的就是一张数据库表(详见launcher app源码)。
private void sendNotify (Uri uri) {String notify = uri.getQueryParameter(PARAMETER_NOTIFY);if (notify == null || "true".equals(notify)) {getContext().getContentResolver(). notifyChange (uri, null);} }@Overridepublic Uri insert(Uri uri, ContentValues initialValues) {SqlArguments args = new SqlArguments(uri);SQLiteDatabase db = mOpenHelper.getWritableDatabase();final long rowId = db.insert(args.table, null, initialValues);if (rowId <= 0) return null;uri = ContentUris.withAppendedId(uri, rowId);sendNotify (uri);return uri;}?