Android Wear 数据同步机制总结
当手机与手表建立蓝牙连接之后,数据就可以通过Google Play Service进行传输。
同步数据对象Data Item
DataItem提供手机与手表数据存储的自动同步,一个DataItem对象由其创建者与路径组成的URI所确定。一个DataItem对象为手机和手表提供了一个数据通路,开发者通过改变指定的DataItem实现手机和手表的数据自动同步。
访问数据层API
DataItem可以提供手机和手表数据的保存,改变该对象的操作则依赖数据层API(the Data Layer APIs),也就是说,在改变DataItem数据之前,需要先访问数据层,获得一个GoogleApiClient实例,从而能够使用数据层API。
下面是实例化GoogleApiClient的代码
GoogleApiClient mGoogleAppiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(new ConnectionCallbacks() {
@Override
public void onConnected(Bundle connectionHint) {
Log.d(TAG, "onConnected: " + connectionHint);
// Now you canuse the data layer API
}
@Override
public void onConnectionSuspended(int cause) {
Log.d(TAG, "onConnectionSuspended: " + cause);
}
})
.addOnConnectionFailedListener(new OnConnectionFailedListener() {
@Override
public void onConnectionFailed(ConnectionResult result) {
Log.d(TAG, "onConnectionFailed: " + result);
}
})
.addApi(Wearable.API)
.build();
在使用数据层Api的之前,需要先调用connect()方法,如果成功则会回调onConnected()方法,否则回调onConnectionFailed()。
同步DataItems
GoogleApiClient连接成功后,就可以通过DataItem进行数据同步了。
一个DataItem包括连个部分,一个是Payload,这是一个字节数组,可以通过序列化或者反序列化保存需要的数据类型和对象;另一个是Path,这是一个唯一的字符串,由反斜杠开头,区别不同的DataItem。
通常在开发过程中是使用DataMap类实现DataItem接口,类似Bundle键值对的存储方式。