データベースのデータが追加、変更、削除されたときに特定の処理を呼びたいってありますよね。うん、あるある。
AndroidだとregisterContentObserverとnotifyChangeを使うとできます。例えばこんな感じ。
メインの処理側
...
ContentObserver contentObserver = new ContentObserver(new Handler()) {
    @Override
    public void onChange(boolean selfChange) {
        super.onChange(selfChange);
        //データベースに変更があったときに呼び出したい処理を書く
    }
};
//ObserverをContentResolverに登録
getContentResolver().registerContentObserver(URI, true, contentObserver);
...
ContentProviderを継承したクラス。この場合はinsertを例に書いてます。
@Override
public Uri insert(Uri uri, ContentValues contentvalues) {
        SQLiteDatabase db = databaseHelper.getWritableDatabase();
        db.insert("test", null, contentvalues);
        //通知を発したいDB処理の中でnogifyChangeを呼ぶ
        getContext().getContentResolver().notifyChange(uri, null);
        return null;
}
0 件のコメント:
コメントを投稿