2016-09-23 3 views
-5

Я пишу приложение для Android и нуждаюсь в получении данных с сервера. Как узнать, не изменяются ли данные при загрузке всех данных каждый раз?Мобильное приложение и сервер

Считаете ли вы, что полагаться на дату и время работы? Я имею в виду: если сервер сообщает приложения последний раз обновлен был в 11.00 и текущее время 11,01 это означает, что есть обновления {серверы также говорит мне, в частности, какие обновления были сделаны } еще нет обновлений

ответ

0

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

Например, вы можете отправить простой запрос, ответьте «Request A», чтобы получить ответ от сервера. На стороне сервера, если данные изменились, ответ будет «истинным», иначе «ложным».

Теперь, если вы получите ответ как ложный, нет необходимости загружать полные данные. Если ответ верен, приложение должно начать загрузку данных, а затем обновить контент.

Вы можете настроить свое ожидающее намерение на огонь после того, как сказали «четыре часа». Поэтому через четыре часа запрос будет отправлен, и вы получите ответ. Во-вторых, вам нужно настроить диспетчер аварийных сигналов и настроить его повторение, чтобы он отправлял запрос каждые четыре часа.

Вам также понадобится широковещательный приемник для приема трансляции. В onReceive BroadcastReceiver вам нужно проверить ответ, и в зависимости от него вам нужно обновить свои данные (если это правда).

Метод огонь ожидающий намерение каждые четыре часа:

public void scheduleAlarmForDataDownload() { 
     Long time = new GregorianCalendar().getTimeInMillis()+1000 * 60 * 60 * 4;// current time + 4 Hrs 
     Intent intent = new Intent(this, AlarmReceiver.class); 
     PendingIntent intentAlarm = PendingIntent.getBroadcast(this, 0, intent, 0); 
     AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
     alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, time, 1000 * 60 * 60 * 4, intentAlarm);// 4 Hrs 
     //Toast.makeText(this, "Alarm Scheduled for 4 Hrs", Toast.LENGTH_LONG).show(); 
    } 

AlarmReceiver класс

@Override 
    public void onReceive(Context context, Intent intent) { 
     // method to send a request(Request A) to server and check the response. 
     // If response is true again make a request to download and refresh the app data. 
     // If the response is false do nothing 

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