Bmob 開發 Android程式快速入門 8 資料實時同步
阿新 • • 發佈:2019-01-02
Bmob 開發 Android程式快速入門 8 資料實時同步
資料實時同步
資料實時同步是一個超酷的功能!
SDK可以實現對資料表或行的監聽,當這個表或者行的資料發生變化時,Bmob會立即將變化的資訊告知SDK。 這種服務非常適合做遊戲開發(如,開發鬥地主遊戲,三個人同時監聽一行資料的變化,任何一個人出牌都會將資料寫入到這行資料中,其他人也就立即知道了)、群聊(一群人監聽某個表的變化,任何人發言都會將資料寫入到這個表中,其他人也可以立即知道了)等實時性要求很高的場景中。
為方便大家快速瞭解資料的實時同步服務,我們提供了一個簡單的應用例項( https://github.com/bmob/bmob-android-demo-realtime-data )供大家參考。
開始連線
使用資料實時功能,首先需要建立BmobRealTimeData
物件,然後呼叫start
方法連線伺服器。
BmobRealTimeData rtd = new BmobRealTimeData(); rtd.start(this, new ValueEventListener() { @Override public void onDataChange(JSONObject data) { // TODO Auto-generated method stub Log.d("bmob", "("+data.optString("action")+")"+"資料:"+data); } @Override public void onConnectCompleted() { // TODO Auto-generated method stub Log.d("bmob", "連線成功:"+rtd.isConnected()); } });
start
方法中的ValueEventListener
引數用於監聽連線成功和資料變化的回撥。當有資料變化時會通過onDataChange回撥方法反饋到客戶端。開發者只需要處理得到的data就可以了。
注:
1、監聽器不支援UI執行緒,在監聽回撥中請不要直接操作UI;
2、如果你要監聽User、Installation等系統表的話,表名前需要加上“_”,例如:_User
監聽資料
在BmobRealTimeData物件連線成功後,就可以進行資料的監聽了。BmobSDK提供了監聽表和行的方法如下:
// 監聽表更新 rtd.subTableUpdate(tableName); // 監聽表刪除 rtd.subTableDelete(tableName); // 監聽行更新 rtd.subRowUpdate(tableName, objectId); // 監聽行刪除 rtd.subRowDelete(tableName, objectId);
其中tableName
為要監聽的資料表名,objectId
為要監聽的資料行Id, 通常比較保險的做法是在BmobRealTimeData
物件的連線狀態為true
的情況下進行監聽,程式碼如下:
if(rtd.isConnected()){
// 監聽表更新
rtd.subTableUpdate(tableName);
}
取消監聽
當開發者想取消監聽某個行為是,可使用下面的方法:
// 取消監聽表更新
rtd.unsubTableUpdate(testTableName);
// 取消監聽表刪除
rtd.unsubTableDelete(testTableName);
// 取消監聽行更新
rtd.unsubRowUpdate(testTableName, objectId);
// 取消監聽行刪除
rtd.unsubRowDelete(testTableName, objectId);
希望對你有幫助。