В вашей ситуации я бы выбрал JSON вместо XML по всем причинам, указанным в следующем сообщении: http://ajaxian.com/archives/json-vs-xml-the-debate
Кроме того, в Android по умолчанию встроены массивы JSON, поэтому вам не нужно выполнять дополнительную передачу кода.
return new JSONArray("my json string goes here...");
Поскольку речь идет о мобильном устройстве, я бы всегда генерировал изменения в вашем php-скрипте, а не имел бы полную синхронизацию, так как это будет намного меньше по размеру, чем полная синхронизация. Тем не менее, вам нужно будет дать своему пользователю возможность выполнить полную синхронизацию, если это применимо к вашему приложению. Я бы использовал базу данных SQLite для хранения данных и обновлял только изменения в них.
Чтобы уменьшить поток, вы можете сжать ваш gzip-файл из php, так как он может быть изначально считан устройством Android. В моем приложении я сжимаю 500 КБ до ~ 110 КБ перед передачей, что значительно снижает производительность. Вот частичный пример того, как читать поток:
InputStream in = null;
HttpURLConnection httpConn = null; // you will have to write your on code for this bit.
if (httpConn.getContentEncoding() != null)
{
String contentEncoding = httpConn.getContentEncoding().toString();
if (contentEncoding.contains("gzip"))
{
in = new GZIPInputStream(httpConn.getInputStream());
}
}
else
{
in = httpConn.getInputStream();
}
Я надеюсь, что все это имеет смысл, это был долгий день программирования:)
Stu