我是靠谱客的博主 怕孤单枫叶,最近开发中收集的这篇文章主要介绍android 7.0 JobService启动时onStartJob执行问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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执行问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部