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

希望对你有帮助。

猜你喜欢

转载自blog.csdn.net/qq_41204464/article/details/85227695