java - 解锁手机时 Job Scheduler 在一秒钟内运行两次

标签 java android android-jobscheduler

我正在尝试定期将我的位置值从 Android 手机发送到服务器应用程序,并将时间段设置为 1 分钟。当我开始服务时,jobservice 工作正常,但几分钟后,当我解锁手机时,Jobservice 在 1 秒内发送了两个数据。我的代码有什么问题吗

MainActivity.java

    JobScheduler jobScheduler=
 (JobScheduler)getSystemService(Context.JOB_SCHEDULER_SERVICE);

ComponentName jobService = new ComponentName(getPackageName(), 
ServiceClass.class.getName());
    JobInfo.Builder jobInfo = new JobInfo.Builder(MY_JOB, jobService);
    PersistableBundle bundle = new PersistableBundle();
    jobInfo.setPeriodic(period*60*1000);
 int jobId = jobScheduler.schedule(jobInfo.build());
    if(jobId>0){
        Toast.makeText(MainActivity.this,"Successfully scheduled job 
    ",Toast.LENGTH_SHORT).show();
        btstartservice.setEnabled(false);
        btstopservice.setEnabled(true);
    }else{
        Toast.makeText(MainActivity.this,"Faild to start service 
  ",Toast.LENGTH_SHORT).show();
    }

ServiceClass.java

   public class ServiceClass extends JobService implements LocationListener{
      public boolean onStartJob(JobParameters params) {
         getLocation();
         return false;
      }

      @Override
      public boolean onStopJob(JobParameters params) {
          Toast.makeText(getApplicationContext(),"Service 
          Stopped",Toast.LENGTH_SHORT).show();
          return false;
     }
}

最佳答案

如果您查看 JobInfo 代码,MIN_PERIOD_MILLIS设置为 15 分钟。任何低于此时间段的设置都将实际使用 15 分钟。

查看此 comment也在代码中:

Query the minimum interval allowed for periodic scheduled jobs. Attempting to declare a smaller period that this when scheduling a job will result in a job that is still periodic, but will run with this effective period.

您的间隔周期性任务将需要一些其他服务,可能警报管理器会为您工作。

关于java - 解锁手机时 Job Scheduler 在一秒钟内运行两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47152319/

相关文章:

java - 排队顺序 UI 作业并在 UI 中显示它们

java - achartengine饼图未在 ScrollView 中呈现

Android studio调试报错 "Connection refused"

java - Firebase 作业调度程序无法在 Oreo 设备上运行

java - 使自定义对象可转换

Java 泛型问题 : Class "not within bounds of type-variable" error.

java - 如何将 jstring 转换为 wchar_t *

Android xml 布局和添加用 xml 编写的自定义 View

Android 9 总是在 onStartJob 返回 true 后立即调用 onStopJob

java - Android:如何使用JobService的JobFinished