在移动设备上,从服务中,我使用相同的路径使用以下代码更新位图资产:
PutDataMapRequest dataMap = PutDataMapRequest.create("/result/1");
dataMap.getDataMap().putString(FIELD_NAME, name);
if(bitmap != null) {
Asset asset = createAssetFromBitmap(bitmap);
dataMap.getDataMap().putAsset(FIELD_IMAGE, asset);
}
PutDataRequest request = dataMap.asPutDataRequest();
PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi
.putDataItem(mGoogleApiClient, request);
DataApi.DataItemResult result = pendingResult.await(5L, TimeUnit.SECONDS);
在可穿戴设备上,我正在关注以下变化:
@Override
public void onDataChanged(DataEventBuffer dataEvents) {
for (DataEvent event : dataEvents) {
if (event.getType() == DataEvent.TYPE_CHANGED) {
Log.d(TAG, "DataItem changed: " + event.getDataItem().getUri().toString());
...
dataEvents.release();
现在它第一次运行时,我得到一个数据事件。但是,下次我运行它时,我得到了 2 个具有相同 Uri 的 dataEvents,旧的和新的。等等。
我认为在 PutDatMapRequest.create() 中使用相同的路径只会更新 DataApi 同步存储中的数据,然后同步它。
我已经尝试过 Wearable.DataApi.deleteDataItems() 但这只是给了我一个 CHANGED 和 DELETED 事件的大列表,它们都具有相同的 Uri。
随着时间的推移,如何避免在可穿戴设备上获得大量数据事件?