在这种情况下。
我有一个带数据库的应用程序。 数据库必须每X分钟更新一次。 数据位于Web服务器上。 与服务器的通信将需要大约10个httpget请求。 到目前为止,已经完成了后台服务和HTTPget函数,用于获取新信息和更新数据库。 问题是它必须在X分钟后在后台更新。 我不确定是什么以及如何实现这一点。
1.使用延迟功能并每隔X分钟运行一次? 2.使用睡眠线程并每隔X分钟将其唤醒一次?
还是其他什么?
答案 0 :(得分:1)
使用警报管理器在一段时间后触发事件,在这种情况下,您必须在每x分钟后开始向服务器发送请求。请参阅此处http://www.learn-android-easily.com/2013/06/scheduling-task-using-alarm-manager.html
答案 1 :(得分:1)
使用Intent Service并使用alarm manager每隔X分钟定期运行。
使用Broadcast Receiver触发意向服务,以便即使用户在手机上开机,服务也会继续运行
步骤1.创建您的意图服务
public class SimpleIntentService extends IntentService {
public SimpleIntentService() {
super("SimpleIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
// TODO your task
}
}
步骤2.使用AlarmManager重复待处理的服务意图
Intent myIntent = new Intent(context, StartMyServiceReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, myIntent, 0);
alarmMgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime(),
AlarmManager.INTERVAL_FIFTEEN_MINUTES, pi);
步骤3.为了确保在电话再次启动时关闭电源后服务仍然运行,请创建PowerEventReceiver
public class PowerEventReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
//start your service
}
}
}
P.S:请记住在AndroidManifest中注册您的服务和接收器。