定期从Android中的服务器获取数据(轮询)

时间:2010-08-31 08:36:00

标签: java android android-asynctask

我在应用程序上工作,我使用rest调用从服务器获取数据并将其添加到视图中。我正确地获得了所有初始数据。我使用AsyncTask来做它。

现在我想定期(比如2分钟)从服务器获取新数据并将其添加到view.Periodically从Android服务器获取数据(轮询)。

3 个答案:

答案 0 :(得分:3)

您可以签出AlarmManager类来执行此操作。

Intent intent = new Intent(this, MyAlarmManager.class);

long scTime = 60*2000;//2mins

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + scTime, pendingIntent);

这是闹钟管理器 -

public class MyAlarmManager extends BroadcastReceiver {

    Context _context;
        @Override
        public void onReceive(Context context, Intent intent) {
            _context= context;
            //connect to server..

        }
}

当AlarmManager被“触发”时,再次连接到服务器并填充刚收到的数据。

http://developer.android.com/reference/android/app/AlarmManager.html

答案 1 :(得分:1)

最好的方法是创建一个从服务器获取数据的服务。 之后,如果您的活动正在运行,该服务可以使用获取的数据向活动发送意图。

或者,在您的应用运行时让服务运行,并让您的活动在启动时绑定到服务。然后使用AIDL或类似的东西与服务进行通信 (例如,每次服务获取数据时,它都可以触发您活动中的回调函数)

答案 2 :(得分:1)

按照here提到的教程进行操作。这正是你想要做的。此外,由于服务器呼叫每隔几分钟就会消耗电池。因此,只有当服务器数据通过推送通知更改时,您才可以尝试服务器调用。