我正尝试如下所示使用JobScheduler,我希望每1500毫秒安排一次任务。当我运行下面发布的代码时,我收到以下信息 在logCat中:
E/JobServiceContext: Time-out while trying to bind com.example.pc_amr.twittertrendsnearlocation/.ActMain$JobSchedulerService jId=1, u0, dropping.
注意:JobSchedulerService是在ActMain活动内部创建的
请让我知道如何正确地每11500毫秒安排任务以及如何解决此错误
清单:
<service
android:name=".services.TwitterTrendsAPIService"
android:exported="false"
android:enabled="true"/>
<service
android:name=".ActMain$JobSchedulerService"
android:permission="android.permission.BIND_JOB_SERVICE"
android:exported="true"/>
代码:
this.mJobScheduler = (JobScheduler) getApplicationContext().getSystemService(JOB_SCHEDULER_SERVICE);
this.mComponentName = new ComponentName(this, JobSchedulerService.class);
JobInfo jobInfoObj = new JobInfo.Builder(1, this.mComponentName).setPeriodic(1500).build();
this.mJobScheduler.schedule(jobInfoObj);
...
...
...
public class JobSchedulerService extends JobService {
public JobSchedulerService() {
super();
}
@Override
public boolean onStartJob(JobParameters params) {
Log.w(TAG, SubTag.bullet("onStartJob"));
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
Log.w(TAG, SubTag.bullet("onStartJob"));
return true;
}
}
答案 0 :(得分:0)
由于只有11500ms,所以最好的答案是使用Handler:
Handler handler = new Handler();
int delay = 11500 ; //milliseconds
handler.postDelayed(new Runnable(){
public void run(){
//ur code here
handler.postDelayed(this, delay);
}
}, delay);
答案 1 :(得分:0)
首先,JobScheduler
的最短时间约为15分钟左右。您不能使用JobScheduler
每1.5秒进行一次工作。
第二,您的JobScheduler
是活动内的嵌套类。这是行不通的。您需要将其设为static
类或独立类。
有多种方法可以定期从用户界面执行工作,例如:
postDelayed()
在View
上Observable.interval()
ScheduledExecutorService
其中任何一项是否合适,很大程度上取决于您要完成的工作。