DataAPI同步

时间:2015-12-18 15:38:23

标签: wear-os android-wear-data-api

我正在开发一个应用程序,用于侦听磨损方面的gps位置并将其写入文件。由于我希望将这些文件保存在手持设备端,目前我将这些位置添加到数据图中,因为它们被获取:

private void addLocationEntry(double latitude, double longitude, float accuracy, long gpsTime, float speed, double altitude, long time){
    String PATH = "/GPSdata";

    if(!googleClient.isConnected()){
        return;
    }

    String dataString = gpsTime + "\t" + time + "\t" + latitude + "\t" + longitude + "\t" + speed +
            "\t" + distance + "\t" + accuracy + "\t" + altitude + "\n";
    String name = new SimpleDateFormat("HH'h'mm'm'ss's'_dd-MM-yyyy").format(initialTime);

    //make datamap and send it (GPSdata file)
    DataMap dataMap = new DataMap();
    dataMap.putLong(KEY_INITIALTIME, initialTime);
    dataMap.putString(GPSinfo, dataString);
    new SendToDataLayerThread(GPSdata + "/" + time, dataMap).start();
}

class SendToDataLayerThread extends Thread {
    String path;
    DataMap dataMap;

    // Constructor for sending data objects to the data layer
    SendToDataLayerThread(String p, DataMap data) {
        path = p;
        dataMap = data;
    }

    public void run() {
        // Construct a DataRequest and send over the data layer
        PutDataMapRequest putDMR = PutDataMapRequest.create(path);
        putDMR.getDataMap().putAll(dataMap);
        PutDataRequest request = putDMR.asPutDataRequest();
        DataApi.DataItemResult result = Wearable.DataApi.putDataItem(googleClient, request).await();

        if (!result.getStatus().isSuccess()){
            run();
        }
    }
}

事情是,在活动结束时,用户可以说在此之前收集的数据不会存储在文件中...所以我想删除所有发送的数据图,以便,手持设备方面,不接收它们。

此时我每次创建数据图时都会发送数据图,这意味着最后,如果用户不想存储数据,则所有数据图都已经发送过了......

有没有办法取消创建的数据地图或在应用程序结束时发送所有数据地图(不会过度杀死内存)?

1 个答案:

答案 0 :(得分:0)

如果您正在寻找同步,则无法在DataApi中“安排”同步。如果将它保存在内存中太多,那么你唯一的选择是将其写入本地数据文件,最后从文件读取并发送数据并删除文件,或者如果用户不想要删除文件发送数据。请注意,即使你可以安排同步,你也可以使用相同数量的内存(系统必须在发送之前将数据保存在内存中),或者必须将它们写入文件,直到时间表出现,所以我是如果你自己做的话,不确定会有什么不同。