我将不胜感激,因为已经尝试了一切使deleteDataItems正常运行的尝试,但是没有成功。

我已经实现了一个非常简单的方案,在主应用程序中创建新的数据项(ArrayList),然后使用Data API将其传递给可穿戴客户端。

以下是一些代码段:

  public void SyncDataItemsMainApp()
  {

  if (mGoogleApiClient==null){mGoogleApiClient.connect();}

  ArrayList<String> myList;
  myList = new ArrayList<String>();

  myList.add(new String(strValue));   // I add different set of values each time so it could be anything.

 //For simplicity lets assume I add "Books" and "Pens"


  PutDataMapRequest putDataMapReq = PutDataMapRequest.create("/mylistitem");
  putDataMapReq.getDataMap().putLong(ACTION_TIME_STAMP, new Date().getTime());
  putDataMapReq.getDataMap().putStringArrayList("com.myapp.example",myList);

  PutDataRequest putDataReq = putDataMapReq.asPutDataRequest();
  Wearable.DataApi.deleteDataItems(mGoogleApiClient,putDataMapReq.getUri()); //I use this line to delete DataItems which were created in the past as I do not want to store all variables on the cloud but only the current ones in myList
  Wearable.DataApi.putDataItem(mGoogleApiClient, putDataReq);
  }


这是可穿戴的OnDataChanged”

  @Override
  public void onDataChanged(DataEventBuffer dataEvents)
  {
    // TODO Auto-generated method stub
    for (DataEvent event : dataEvents)
    {
        // DataItem changed
        DataItem item = event.getDataItem();

        if (event.getType() == DataEvent.TYPE_CHANGED)
        {

            if (item.getUri().getPath().compareTo("/mylistitem") == 0)
            {
                DataMap dataMap = DataMapItem.fromDataItem(item).getDataMap();


                ArrayList<String> myListItems =dataMap.getStringArrayList("com.myapp.example");
                populateWearableList(myListItems);
            }
        }
    }
}


现在的问题是,每次我解析可穿戴设备上的arrayList时,它总是包含我曾经添加到主应用程序中Array的所有值,如上所述,我只想将包含的最后一组值存储到最后一个电话。因此,似乎DeleteDataItems实际上根本不起作用。有趣的是,在“通过蓝牙调试”模式下,我只能看到最后一组值,但是一旦我的应用程序和可穿戴设备连接到云,它将创建具有相同值的其他实例,这非常令人困惑。

非常感谢您提供的任何帮助,因为我将尝试使用DataAPI进行所有尝试。

最佳答案

我发现这样做的原因是在应用程序处于后台模式时尚未停止的DataApi Listener。我必须将所有Data Api调用放入一个单独的WearableListenerService中,一切开始正常运行。我希望这会在文档中的某个地方被调用。

09-28 12:44