DBに変更があった場合ContentResolverのcallbackを呼び出す
データベースのデータが追加、変更、削除されたときに特定の処理を呼びたいってありますよね。うん、あるある。
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; }