У меня есть сервис который с определенным интервалом подключается к серверу и сверяет последний id в БД. Если на сервере id больше, чем у меня в preferences, то приходит уведомление. Проблема в том, что если пользователь обновит список и получит новые записи, сервис все равно пошлет уведомление. Решил при загрузке данных брать id последнего JSONObject и сохранять его в preferences.
//если произошла ошибка при загрузке
//или от сервера пришел null
//то сохранение в БД не будет происходить
//список будет формироваться только из сохраненных
if (json != null || !json.equals("null"))
{
JSONArray messages = new JSONArray(json);
for (int i = 0; i < messages.length(); i++)
{
//берем каждый JSONObject
JSONObject message = messages.getJSONObject(i);
//берем id
String id = message.getString("id");
//сохраняем последний id
//чтобы сервис не показывал ложную инфу
if (i == message.length() - 1)
{
editor.putInt("lastid", Integer.parseInt(id));
editor.commit();
}
:D У вас проверка
if(i == message.length() - 1)
Не проходит, так как вы проверяете не последний JSONObject, а последний элемент в нем. У вас JSONArray назван messages, а не message
Сборка персонального компьютера от Artline: умный выбор для современных пользователей