1. 程式人生 > >Bmob 開發 Android程式快速入門 8 資料實時同步

Bmob 開發 Android程式快速入門 8 資料實時同步

                     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);

希望對你有幫助。