要解决“Android工作人员被取消,无原因显示”的问题,可以尝试以下方法:
int status = JobScheduler.RESULT_FAILURE;
JobScheduler jobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
if (jobScheduler != null) {
List jobInfoList = jobScheduler.getAllPendingJobs();
for (JobInfo jobInfo : jobInfoList) {
if (jobInfo.getService().getClassName().equals(YourJobService.class.getName())) {
status = jobScheduler.schedule(jobInfo);
break;
}
}
}
if (status == JobScheduler.RESULT_SUCCESS) {
// 工作人员已成功重新安排
} else {
// 工作人员无法重新安排
}
ComponentName componentName = new ComponentName(context, YourJobService.class);
JobInfo.Builder builder = new JobInfo.Builder(jobId, componentName);
builder.setRequiresCharging(true); // 设置充电状态为必要条件
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); // 设置网络连接为必要条件
// 添加其他条件
JobInfo jobInfo = builder.build();
JobScheduler jobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
if (jobScheduler != null) {
int status = jobScheduler.schedule(jobInfo);
if (status == JobScheduler.RESULT_SUCCESS) {
// 工作人员已成功安排
} else {
// 工作人员无法安排
}
}
int permissionCheck = ContextCompat.checkSelfPermission(context, Manifest.permission.YOUR_PERMISSION);
if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
// 权限已授予
} else {
// 请求权限
ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.YOUR_PERMISSION}, REQUEST_CODE);
}
如果以上方法仍然无法解决问题,可能需要进一步检查Android工作人员的具体实现,以确定是否存在其他问题。