Fixed
Status Update
Comments
ra...@google.com <ra...@google.com>
ra...@google.com <ra...@google.com> #2
su...@google.com <su...@google.com>
da...@gmail.com <da...@gmail.com> #3
> We accept pull requests! :)
Is there a public repo somewhere? I don't see any obvious repo for it inhttps://android.googlesource.com , and it doesn't seem to be inside https://android.googlesource.com/platform/frameworks/support .
Room supports final fields (yay!), which probably will suffice for many people with respect to this feature request.
Is there a public repo somewhere? I don't see any obvious repo for it in
Room supports final fields (yay!), which probably will suffice for many people with respect to this feature request.
Description
I recently switched my JobManager TriggerContentUri implementation to WorkManager and am noticing a major slowdown in the speed at which it responds to ContentUri changes vs. JobManager.
In JobManager, there is an api call to builder.setTriggerContentMaxDelay() that I use as follows to ensure a response within 3 seconds of the content change - this allows my widget UI to be responsive and show a new calendar event created in the Google Calendar app quickly.
public static void scheduleJob(Context context) {
JobScheduler js = context.getSystemService(JobScheduler.class);
JobInfo.Builder builder = new JobInfo.Builder(JOB_TAG_CALENDAR,
new ComponentName(context, CalendarContentTriggerJob.class));
builder.addTriggerContentUri(new JobInfo.TriggerContentUri(CalendarContract.CONTENT_URI,
JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS));
builder.setTriggerContentUpdateDelay(DateUtils.SECOND_IN_MILLIS);
builder.setTriggerContentMaxDelay(3 * DateUtils.SECOND_IN_MILLIS);
js.schedule(builder.build());
}
My WorkManager implementation looks as follows. There is no way of specifying a Max Delay and as a result the response to the content change is significantly slower than the JobManager implementation.
fun scheduleJob() {
// Define the constraints
val constraints = Constraints.Builder()
.addContentUriTrigger(CalendarContract.CONTENT_URI, true)
.build()
// Create the job definition
val calendarSync = OneTimeWorkRequest.Builder(CalendarContentTriggerWorker::class.java)
.setConstraints(constraints)
.addTag(JOB_TAG_CALENDAR)
.build()
// Start the job
WorkManager.getInstance().enqueueUniqueWork(JOB_TAG_CALENDAR, ExistingWorkPolicy.REPLACE,
calendarSync)
}