onDataChanged is not getting called

懵懂的女人 提交于 2020-01-14 05:00:07

问题


I am developing demo application for wear and handheld. When wear starts it sends request to handheld and get list along with time stamp. and while we click on any list item, it sends changes to handheld again. This works perfectly

But not i want to sends list while on click of device list is performs. in device activity thread

       class SendToDataLayerThread extends Thread {

    String path;
    DataMap dataMap;

    SendToDataLayerThread(String p,DataMap d){
        path = p;
        dataMap = d;
    }

    @Override
    public void run() {

         PutDataMapRequest putDMR= PutDataMapRequest.create(path);
                ArrayList<Job> arrlist=new ArrayList<>();
                ArrayList<String> staticArray=new ArrayList<>();
                mydb=new DBHelper(ListOfTaskActivity.this);
                arrlist.clear();
                arrlist = mydb.getAllCalls();

                if(arrlist.size()>0) {
                    for (int i = 0; i < arrlist.size(); i++) {
                        staticArray.add(arrlist.get(i).get_id()+"~"+arrlist.get(i).getJob_status()+"~"+arrlist.get(i).getJob_placename());

                    }
                }

                dataMap.putStringArrayList("CallArrayList", staticArray);

            NodeApi.GetConnectedNodesResult nodes = Wearable.NodeApi.getConnectedNodes(wagoogleApiClient).await();
            for(Node node : nodes.getNodes()) {
                if(wagoogleApiClient.isConnected()){

                    dataMap.putLong("new_TimeStamp", new Date().getTime());
                    putDMR.getDataMap().putAll(dataMap);

                    PutDataRequest request = putDMR.asPutDataRequest();
                    Wearable.DataApi.putDataItem(googleApiClient,request);
                }
            }
       }
  }

this works, but wearable service onDataChanged never called

wear service

   public class WearableService extends WearableListenerService {
         @Override
public void onDataChanged(DataEventBuffer dataEvents) {
    super.onDataChanged(dataEvents);
     DataMap dataMap;
    try {
        for (DataEvent event : dataEvents) {
            Log.d(TAG, "in for DataEvent event : dataEvents");
            if (event.getType() == DataEvent.TYPE_CHANGED) {
                String path = event.getDataItem().getUri().getPath();

                if(path.equals("/DataService_Path")) {
                   // change list
                 }
   }
 }

I am stuck here, thank you for help in advance


回答1:


Did you connect to the googleclientapi in your service?

mGoogleApiClient = new GoogleApiClient.Builder(context) .addApi(Wearable.API) .addConnectionCallbacks(this) .build(); mGoogleApiClient.connect()

Also check this post:

WearableListenerService, onDataChanged() is not called



来源:https://stackoverflow.com/questions/32516177/ondatachanged-is-not-getting-called

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!