Turn MessageRetrievalService into IncomingMessageObserver.

Due to an Android P bug, we basically need to stop calling
startService() in onResume()/onPause(). That means I had to turn
MessageRetrieval service into a singlton instead of a service. I also
moved the offending KeyCachingService calls into static methods that
didn't have to start the service.
This commit is contained in:
Greyson Parrelli
2018-10-15 13:27:21 -07:00
parent 7a6d863ff7
commit 45e0bb281f
11 changed files with 270 additions and 350 deletions

View File

@@ -47,6 +47,8 @@ import org.thoughtcrime.securesms.notifications.NotificationChannels;
import org.thoughtcrime.securesms.push.SignalServiceNetworkAccess;
import org.thoughtcrime.securesms.service.DirectoryRefreshListener;
import org.thoughtcrime.securesms.service.ExpiringMessageManager;
import org.thoughtcrime.securesms.service.IncomingMessageObserver;
import org.thoughtcrime.securesms.service.KeyCachingService;
import org.thoughtcrime.securesms.service.LocalBackupListener;
import org.thoughtcrime.securesms.service.RotateSignedPreKeyListener;
import org.thoughtcrime.securesms.service.UpdateApkRefreshListener;
@@ -77,10 +79,11 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc
private static final String TAG = ApplicationContext.class.getSimpleName();
private ExpiringMessageManager expiringMessageManager;
private JobManager jobManager;
private ObjectGraph objectGraph;
private PersistentLogger persistentLogger;
private ExpiringMessageManager expiringMessageManager;
private JobManager jobManager;
private IncomingMessageObserver incomingMessageObserver;
private ObjectGraph objectGraph;
private PersistentLogger persistentLogger;
private volatile boolean isAppVisible;
@@ -97,6 +100,7 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc
initializeCrashHandling();
initializeDependencyInjection();
initializeJobManager();
initializeMessageRetrieval();
initializeExpiringMessageManager();
initializeGcmCheck();
initializeSignedPreKeyCheck();
@@ -113,12 +117,14 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc
isAppVisible = true;
Log.i(TAG, "App is now visible.");
executePendingContactSync();
KeyCachingService.onAppForegrounded(this);
}
@Override
public void onStop(@NonNull LifecycleOwner owner) {
isAppVisible = false;
Log.i(TAG, "App is no longer visible.");
KeyCachingService.onAppBackgrounded(this);
}
@Override
@@ -168,6 +174,10 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc
this.jobManager = new JobManager(WorkManager.getInstance());
}
public void initializeMessageRetrieval() {
this.incomingMessageObserver = new IncomingMessageObserver(this);
}
private void initializeDependencyInjection() {
this.objectGraph = ObjectGraph.create(new SignalCommunicationModule(this, new SignalServiceNetworkAccess(this)),
new AxolotlStorageModule(this));