2015-12-18 5 views
0

Я разрабатываю приложение, которое слушает позиции gps на стороне износа и записывает их в файл. Как я хочу, чтобы сохранить эти файлы синхронизированные на карманном стороне, в настоящее время я добавляю позиции в виде datamap, как они приобретены:Синхронизация DataAPI

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(); 
     } 
    } 
} 

Дело в том, что пользователь, в конце деятельности, может скажем, что данные, собранные до тех пор, не должны храниться в файлах ... Поэтому я хочу удалить все отправленные данные, чтобы на карманной стороне их не получать.

В этот момент Я отправляю datamap за каждый раз, когда он создается, а это значит, что в конце, если пользователь не хочет хранить данные, все данные уже отправлены ...

Есть ли способ отменить созданные данные или отправить их в конце приложения (без чрезмерного уничтожения памяти)?

ответ

0

Вы не можете «запланировать» синхронизацию в DataApi, если это то, что вы ищете. Если сохранить его в памяти слишком много, тогда ваш единственный вариант - записать его в локальный файл данных и в конце прочитать из файла и отправить данные и удалить файл или удалить файл, если пользователь не захочет отправьте данные. Обратите внимание, что даже если вы можете запланировать синхронизацию, у вас был такой же объем памяти (система должна была хранить данные в памяти перед отправкой), либо она должна была записать их в файл до тех пор, пока не появится расписание, поэтому я не уверен, что это будет по-другому, если вы сделаете это сами.

+0

Лучшим способом было планирование синхронизации, но, поскольку это невозможно, и теоретически это не принесло бы никакого прироста памяти, я сделаю это самостоятельно и протестирую потребление памяти. Если он слишком велик, я просто отправлю сообщение на карманную сторону, если пользователь захочет удалить файлы и удалить их на карманной стороне после их создания. – cdlc