概述
MainActivity.java:
public class MainActivity extends AppCompatActivity {
@TargetApi(24)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
JobScheduler scheduler= (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
JobInfo jobInfo=new JobInfo.Builder(1,new ComponentName(this,Test.class))
.setPeriodic(2000)
/*.setOverrideDeadline(2000)*/
.setPersisted(true)
.build();
scheduler.schedule(jobInfo);
for(JobInfo info:scheduler.getAllPendingJobs()){
if(jobInfo.getId()==1){
Toast.makeText(MainActivity.this,"zz",Toast.LENGTH_SHORT).show();
}
}
}
}
Test.java:
@TargetApi(24)
public class Test extends JobService {
private static int a=0;
@Override
public boolean onStartJob(final JobParameters params) {
Toast.makeText(Test.this,"zz",Toast.LENGTH_SHORT).show();
jobFinished(params,false);
return false;
}
@Override
public boolean onStopJob(JobParameters params) {
return false;
}
}
在android 5.1上执行效果为每2秒一个Toast,但运行在android 7.0上,运行后没有立即出现想要的效果,于是goole查询了相关资料,在运行日志中有下面两行信息:
W/JobInfo: Specified interval for 1 is +2s0ms. Clamped to +15m0s0ms
W/JobInfo: Specified flex for 1 is +7s0ms. Clamped to +5m0s0ms
也就是onStartJob( )里的操作至少会在15min后才会执行. 可以setMinimumLatency( )设置最小推迟时间,但该方法并不能和setPeriodic( )一起使用,只能有效执行一次.
尚未找到解决方法.
最后
以上就是怕孤单枫叶为你收集整理的android 7.0 JobService启动时onStartJob执行问题的全部内容,希望文章能够帮你解决android 7.0 JobService启动时onStartJob执行问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复