我在使用 rest 调用从服务器获取数据并将其添加到视图的应用程序上工作。我正确获得了所有初始数据。我使用 AsyncTask 来做这件事。
现在我想定期(比如 2 分钟)从服务器获取新数据并将其添加到视图中。定期从 Android 中的服务器获取数据(轮询)。
我在使用 rest 调用从服务器获取数据并将其添加到视图的应用程序上工作。我正确获得了所有初始数据。我使用 AsyncTask 来做这件事。
现在我想定期(比如 2 分钟)从服务器获取新数据并将其添加到视图中。定期从 Android 中的服务器获取数据(轮询)。
您可以签出 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
按照这里提到的教程。这正是您想要做的。此外,由于每隔几分钟就会进行一次服务器调用,这会消耗电池。因此,只有当服务器数据通过推送通知发生更改时,您才能尝试服务器调用..
最好的方法是创建一个从服务器获取数据的服务。之后,如果您的活动正在运行,则服务可以使用获取的数据向活动发送意图。
或者,在您的应用程序运行时运行服务,并在启动时将您的活动绑定到服务。然后使用 AIDL 或类似的东西与服务进行通信。
(例如,每次服务获取数据时,它都会在您的活动中触发回调函数)