From ae9c53bdf85fd8e03c1d30cb76d6292b8058fafe Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Sat, 20 Oct 2018 22:52:14 -0700 Subject: [PATCH] Ensure jobs have a Context during onAdded(). Fixes a crash. --- src/org/thoughtcrime/securesms/ApplicationContext.java | 2 +- src/org/thoughtcrime/securesms/jobmanager/Job.java | 7 ++++++- .../thoughtcrime/securesms/jobmanager/JobManager.java | 9 ++++++--- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/org/thoughtcrime/securesms/ApplicationContext.java b/src/org/thoughtcrime/securesms/ApplicationContext.java index 382563917c..35ea6c30cd 100644 --- a/src/org/thoughtcrime/securesms/ApplicationContext.java +++ b/src/org/thoughtcrime/securesms/ApplicationContext.java @@ -171,7 +171,7 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc .setMinimumLoggingLevel(android.util.Log.DEBUG) .build()); - this.jobManager = new JobManager(WorkManager.getInstance()); + this.jobManager = new JobManager(this, WorkManager.getInstance()); } public void initializeMessageRetrieval() { diff --git a/src/org/thoughtcrime/securesms/jobmanager/Job.java b/src/org/thoughtcrime/securesms/jobmanager/Job.java index d56c02b6f7..1542418d3a 100644 --- a/src/org/thoughtcrime/securesms/jobmanager/Job.java +++ b/src/org/thoughtcrime/securesms/jobmanager/Job.java @@ -107,8 +107,13 @@ public abstract class Job extends Worker implements Serializable { } } - final void onSubmit(UUID id) { + final void onSubmit(@NonNull Context context, @NonNull UUID id) { Log.i(TAG, buildLog(id, "onSubmit()")); + + if (this instanceof ContextDependent) { + ((ContextDependent) this).setContext(context); + } + onAdded(); } diff --git a/src/org/thoughtcrime/securesms/jobmanager/JobManager.java b/src/org/thoughtcrime/securesms/jobmanager/JobManager.java index a65d2bc88d..419a5d491c 100644 --- a/src/org/thoughtcrime/securesms/jobmanager/JobManager.java +++ b/src/org/thoughtcrime/securesms/jobmanager/JobManager.java @@ -1,5 +1,6 @@ package org.thoughtcrime.securesms.jobmanager; +import android.content.Context; import android.support.annotation.NonNull; import java.util.concurrent.Executor; @@ -22,10 +23,12 @@ public class JobManager { private final Executor executor = Executors.newSingleThreadExecutor(); + private final Context context; private final WorkManager workManager; - public JobManager(@NonNull WorkManager workManager) { - this.workManager = workManager; + public JobManager(@NonNull Context context, @NonNull WorkManager workManager) { + this.context = context; + this.workManager = workManager; } public void add(Job job) { @@ -56,7 +59,7 @@ public class JobManager { OneTimeWorkRequest request = requestBuilder.build(); - job.onSubmit(request.getId()); + job.onSubmit(context, request.getId()); String groupId = jobParameters.getGroupId(); if (groupId != null) {