Merge "[SettingsProvider] use JobScheduler.forNamespace to avoid conflicting jobs" into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
e8e927a2d5
@@ -246,6 +246,7 @@ public class SettingsProvider extends ContentProvider {
|
||||
public static final String RESULT_ROWS_DELETED = "result_rows_deleted";
|
||||
public static final String RESULT_SETTINGS_LIST = "result_settings_list";
|
||||
|
||||
public static final String SETTINGS_PROVIDER_JOBS_NS = "SettingsProviderJobsNamespace";
|
||||
// Used for scheduling jobs to make a copy for the settings files
|
||||
public static final int WRITE_FALLBACK_SETTINGS_FILES_JOB_ID = 1;
|
||||
public static final long ONE_DAY_INTERVAL_MILLIS = 24 * 60 * 60 * 1000L;
|
||||
@@ -2785,12 +2786,13 @@ public class SettingsProvider extends ContentProvider {
|
||||
*/
|
||||
public void scheduleWriteFallbackFilesJob() {
|
||||
final Context context = getContext();
|
||||
final JobScheduler jobScheduler =
|
||||
JobScheduler jobScheduler =
|
||||
(JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
|
||||
if (jobScheduler == null) {
|
||||
// Might happen: SettingsProvider is created before JobSchedulerService in system server
|
||||
return;
|
||||
}
|
||||
jobScheduler = jobScheduler.forNamespace(SETTINGS_PROVIDER_JOBS_NS);
|
||||
// Check if the job is already scheduled. If so, skip scheduling another one
|
||||
if (jobScheduler.getPendingJob(WRITE_FALLBACK_SETTINGS_FILES_JOB_ID) != null) {
|
||||
return;
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.providers.settings;
|
||||
|
||||
import static com.android.providers.settings.SettingsProvider.SETTINGS_PROVIDER_JOBS_NS;
|
||||
import static com.android.providers.settings.SettingsProvider.TABLE_CONFIG;
|
||||
import static com.android.providers.settings.SettingsProvider.TABLE_GLOBAL;
|
||||
import static com.android.providers.settings.SettingsProvider.TABLE_SECURE;
|
||||
@@ -35,7 +36,8 @@ import java.util.List;
|
||||
public class WriteFallbackSettingsFilesJobService extends JobService {
|
||||
@Override
|
||||
public boolean onStartJob(final JobParameters params) {
|
||||
if (params.getJobId() != WRITE_FALLBACK_SETTINGS_FILES_JOB_ID) {
|
||||
if (!SETTINGS_PROVIDER_JOBS_NS.equals(params.getJobNamespace())
|
||||
|| params.getJobId() != WRITE_FALLBACK_SETTINGS_FILES_JOB_ID) {
|
||||
return false;
|
||||
}
|
||||
final List<String> settingsFiles = new ArrayList<>();
|
||||
|
||||
Reference in New Issue
Block a user