如何安排android服务以固定速率执行
我正在开发一个应用程序,该应用程序应每X秒从网络下载一个文件,以检查是否有任何更改,我使用一个服务来执行此操作,但它的执行不是固定的延迟时间速率,以下是我的服务代码:如何安排android服务以固定速率执行,android,android-service,Android,Android Service,我正在开发一个应用程序,该应用程序应每X秒从网络下载一个文件,以检查是否有任何更改,我使用一个服务来执行此操作,但它的执行不是固定的延迟时间速率,以下是我的服务代码: 输出不是固定的,它应该每10秒运行一次,同时以随机方式运行服务使用类代替Timer类。它还执行与您想要的相同的重复任务。AlarmManager重量轻,即使您的设备处于睡眠模式,它也能运行 另请参见以下链接:在IntentService中设置AlarmManager如何?准确得多 Intent intent = new In
输出不是固定的,它应该每10秒运行一次,同时以随机方式运行服务使用类代替Timer类。它还执行与您想要的相同的重复任务。AlarmManager重量轻,即使您的设备处于睡眠模式,它也能运行
另请参见以下链接:在IntentService中设置AlarmManager如何?准确得多
Intent intent = new Intent(context, YourClass.class);
PendingIntent pi = PendingIntent.getService(context, 0, intent, 0);
AlarmManager am = (AlarmManager) c.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), 10*1000, pi);
确保在您的class.class(这是一个IntentService)中,将您的逻辑放入HandleContent(Intent Intent),AlarmManager发送的PendingEvent将每隔10秒调用一次
请更新您的舱单
希望能有帮助
对于重复性工作,android提供了简单的api,称为定时器,请查看。使用非常简单
试试这个:
@Override
public void onStart(Intent intent, int startId) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
Log.d("Internet Available: ", ""+flag);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, 10);
Intent intent1 = new Intent(this, UpdateWidgetServiceDemo.class);
PendingIntent pintent = PendingIntent.getService(this, 0, intent1, 0);
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
int i;
i=15;
alarm.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pintent);
super.onStart(intent, startId);
}
移除
返回启动\u粘滞代码>您当前的代码有什么不适用?请给我您的反馈,如果我的答案可以接受,请接受。您的代码让我很难理解,但感谢您的尝试,这看起来很有效,但我不能使用代码,我不知道它应该如何工作。这没关系,我亲爱的朋友。即使我使用的是一个服务,而不是一个完美工作的意图服务,谢谢
@Override
public void onStart(Intent intent, int startId) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
Log.d("Internet Available: ", ""+flag);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, 10);
Intent intent1 = new Intent(this, UpdateWidgetServiceDemo.class);
PendingIntent pintent = PendingIntent.getService(this, 0, intent1, 0);
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
int i;
i=15;
alarm.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pintent);
super.onStart(intent, startId);
}