4

我在我的一個Android項目中使用GreenDao。 我試圖在更改完成時實現觀察者/偵聽器。Android - 觀察者數據庫與GreenDao ORM變化

到目前爲止,我創建了一個只是發佈事件(通過EventBus)的靜態函數基本函數(保存,替換和刪除),但這種方法給了我很多頭痛的問題。

目前,我正嘗試使用由於某種原因無法工作的ContentObserver(請參閱附加代碼),但我很樂意聽到其他通用解決方案的建議。

觀察者:

public class DBObserver extends ContentObserver { 

    public DBObserver() { 
     super(null); 
     Logger.e("DBObserver was initialized!"); 
    } 

    @Override 
    public void onChange(boolean selfChange) { 
     super.onChange(selfChange); 
     Log.d("SOMETHING CHANGED IN DB OBSERVER"); 
    } 

    @Override 
    public void onChange(boolean selfChange, Uri uri) { 
     super.onChange(selfChange, uri); 
     Log.d("SOMETHING CHANGED IN DB OBSERVER"); 
    } 
} 

登記觀察員(應用的onCreate實現):

DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, DB_NAME, null); 
SQLiteDatabase db = helper.getWritableDatabase(); 
DaoMaster daoMaster = new DaoMaster(db); 
DaoSession daoSession = daoMaster.newSession(); 
getContentResolver().registerContentObserver(TicketModelContentProvider.CONTENT_URI, true, new DBObserver()); 

感謝。

+0

究竟是什麼問題,你如何訪問你的數據? – AlexS

+0

我使用GreenDao來超出我的數據,它工作。我的問題是如何讓這個觀察者工作,所以我將能夠聽取數據庫中的更改。 – EladB

+0

你是怎麼得到這個URI的? –

回答

0

當您更新GreenDao記錄, 你會打電話給

daoSession.getYourBeanDao().update(yourBean); 

,然後用它來通知,

mContext.getContentResolver().notifyChange(YOUR_URI, null); 

它爲我工作。