移动应用和服务器

时间:2016-09-23 08:56:14

标签: android server

我正在编写一个Android应用程序,需要从服务器获取数据。 我怎么知道每次下载所有数据时数据是否有变化?

您认为依靠日期和时间会有效吗?我的意思是: 如果服务器告知应用上次更新的时间是11.00 当前时间是11.01这意味着有更新{服务器还告诉我具体做了哪些更新 } 否则没有更新

1 个答案:

答案 0 :(得分:0)

您可以使用待处理的意图以及警报管理器和广播接收器来实现此功能。

例如,你可以发送一个简单的请求说"请求A"从服务器获得响应。在服务器端,如果数据已更改,则响应将为" true"别的"假"。

现在,如果您将响应视为错误,则无需下载完整数据。如果响应为真,则应用程序应开始下载数据,然后刷新内容。

您可以在说出"四小时"之后将您的待定意图设置为触发。因此,在四小时后,请求将被发送,您将收到回复。其次,您必须设置警报管理器并将其重复设置,以便每四个小时后发送一次请求。

您还需要一个广播接收器来接收广播。在BroadcastReceive的onReceive中,你需要检查响应,并根据它需要刷新你的数据(如果是的话)。

每四小时触发待处理意图的方法:

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

    }