2015-09-21 2 views
0

Я делаю приложение Android для отслеживания местоположения в реальном времени. Да, есть много повторяющихся вопросов, но вот мой сценарий. Широта и долгота устройства постоянно меняются, поэтому я должен отправлять данные на сервер почти каждые 2 секунды.Лучшая практика для android для отправки текстовой строки на сервер

http://myserver.com/tracker.php?lat=10&long=5&guid=123456

С другой стороны, другое устройство будет выборка расположения непрерывно каждые 2 второго

http://myserver.com/getlocation.php?guid=123456

Я новичок в андроиде развития, но гугл о GCM, услугах и заднем AsyncTask. Слив батареи сейчас не проблема. и я тоже беспокоился о фоновых услугах. Каким будет наилучший способ отправки и получения данных каждые 2 секунды? используя AsyncTask или что-то еще?

ответ

0

Это зависит, если ваш сервер знает, какие устройства должны получать данные, вы можете наилучшим образом использовать Google Cloud Messaging, хотя может быть небольшая задержка, которая вам не понравится. Если вы хотите опросить данные на своих устройствах, чем использовать отдельный thread (или AsyncTask, который является только thread с некоторым кодом обертки).

Кроме того, вы также можете использовать см. this question для ознакомления с этим. Но это на стороне сервера и по-прежнему требует потока в вашем приложении. Внутри отдельной нити можно использовать runOnUiThread для обновления пользовательского интерфейса, или использовать success и progress функции из AsyncTask

0

Вы можете использовать Async Задача, которая является лучшим подходом, который следует в community.You можно использовать обработчик внутри ваш код для вызова Async Task через каждые 2 секунды

AsyncTask идеально подходит для операций, которые занимают несколько секунд. Некоторые задачи сохраняют поток в течение длительного времени, поэтому в этом случае рекомендуется использовать пакет java.util.concurrent, такой как Executor, ThreadPoolExecutor и FutureTask.

0

Вы можете Yous Google's Volley

RequestQueue queue = Volley.newRequestQueue(this); 

//... 

String url = String.format("http://myserver.com/tracker.php?lat=%f&long=%f&guid=123456"), 
      latitude, 
      longitude 
    ); 

StringRequest request = new StringRequest(Request.Method.POST, url, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        //handle response 
       } 
      }, 
      new ApiErrorListener(this)); 

    queue.add(request); 

 Смежные вопросы

  • Нет связанных вопросов^_^