如何安排android服务以固定速率执行

如何安排android服务以固定速率执行,android,android-service,Android,Android Service,我正在开发一个应用程序,该应用程序应每X秒从网络下载一个文件,以检查是否有任何更改,我使用一个服务来执行此操作,但它的执行不是固定的延迟时间速率,以下是我的服务代码: 输出不是固定的,它应该每10秒运行一次,同时以随机方式运行服务使用类代替Timer类。它还执行与您想要的相同的重复任务。AlarmManager重量轻,即使您的设备处于睡眠模式,它也能运行 另请参见以下链接:在IntentService中设置AlarmManager如何?准确得多 Intent intent = new In

我正在开发一个应用程序,该应用程序应每X秒从网络下载一个文件,以检查是否有任何更改,我使用一个服务来执行此操作,但它的执行不是固定的延迟时间速率,以下是我的服务代码:




输出不是固定的,它应该每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);
      }