Я учусь использовать JobScheduler. как показано в методе onresume, я устанавливаю критерии, которые должны быть соблюдены для выполнения задания, задание будет запланировано, когда устройство не заряжается, независимо от того, простаивает устройство или нет, и задание будет выполняться каждые 7 секунд.
во время выполнения USB-кабель подключен к устройству для установки приложения, что означает, что устройство заряжается, поэтому после установки приложения задание не началось, потому что устройство заряжается, но после того, как я отключил USB-кабель, я ожидал задание должно быть выполнено, но случилось так, что задание так и не началось, и я не мог понять, почему
пожалуйста, дайте мне знать, почему такое поведение происходит, и, пожалуйста, дайте мне знать ответ на следующий вопрос, это поможет мне лучше понять jobScheduler:
В: setRequiresCharging(false) означает, что задача будет выполняться, только если устройство НЕ заряжается, или это означает, что задача будет выполняться независимо от того, заряжается устройство или нет?
основной вид деятельности
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
private static int jobId = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.w(TAG, "onCreate");
setContentView(R.layout.activity_main);
}
@Override
protected void onResume() {
super.onResume();
Log.w(TAG, "onResume");
ComponentName serviceComponent = new ComponentName(this, MyJobService.class);
JobInfo.Builder builder = new JobInfo.Builder(jobId, serviceComponent);
builder.setRequiresCharging(false);
builder.setRequiresDeviceIdle(false);
builder.setPeriodic(7 * 1000);
JobScheduler jobScheduler = (JobScheduler) getApplication().getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(builder.build());
}
}
служба работы:
package example.com.jobscheduler_00;
public class MyJobService extends JobService {
private static final String TAG = MyJobService.class.getSimpleName();
@Override
public boolean onStartJob(JobParameters params) {
Log.w(TAG, "onStartJob JobId: " + params.getJobId());
Toast.makeText(this, "onStartJob JobId:" + params.getJobId(), Toast.LENGTH_SHORT).show();
jobFinished(params, false);
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
Log.w(TAG, "onStopJob");
Toast.makeText(this, "onStopJob JobId:" + params.getJobId(), Toast.LENGTH_SHORT).show();
return true;
}
}