Improve and streamline Application#onCreate.

This commit is contained in:
Greyson Parrelli
2020-12-20 14:45:51 -05:00
committed by Alan Evans
parent c27300c19d
commit cdd7b2deb9
13 changed files with 205 additions and 117 deletions

View File

@@ -8,6 +8,7 @@ import android.telephony.TelephonyManager;
import androidx.annotation.NonNull;
import org.signal.core.util.concurrent.SignalExecutors;
import org.thoughtcrime.securesms.jobmanager.ConstraintObserver;
public class CellServiceConstraintObserver implements ConstraintObserver {
@@ -17,11 +18,15 @@ public class CellServiceConstraintObserver implements ConstraintObserver {
private volatile Notifier notifier;
private volatile ServiceState lastKnownState;
private static CellServiceConstraintObserver instance;
private static volatile CellServiceConstraintObserver instance;
public static synchronized CellServiceConstraintObserver getInstance(@NonNull Application application) {
public static CellServiceConstraintObserver getInstance(@NonNull Application application) {
if (instance == null) {
instance = new CellServiceConstraintObserver(application);
synchronized (CellServiceConstraintObserver.class) {
if (instance == null) {
instance = new CellServiceConstraintObserver(application);
}
}
}
return instance;
}
@@ -30,7 +35,9 @@ public class CellServiceConstraintObserver implements ConstraintObserver {
TelephonyManager telephonyManager = (TelephonyManager) application.getSystemService(Context.TELEPHONY_SERVICE);
ServiceStateListener serviceStateListener = new ServiceStateListener();
telephonyManager.listen(serviceStateListener, PhoneStateListener.LISTEN_SERVICE_STATE);
SignalExecutors.BOUNDED.execute(() -> {
telephonyManager.listen(serviceStateListener, PhoneStateListener.LISTEN_SERVICE_STATE);
});
}
@Override

View File

@@ -13,18 +13,10 @@ public class DecryptionsDrainedConstraintObserver implements ConstraintObserver
private static final String REASON = DecryptionsDrainedConstraintObserver.class.getSimpleName();
private volatile Notifier notifier;
public DecryptionsDrainedConstraintObserver() {
ApplicationDependencies.getIncomingMessageObserver().addDecryptionDrainedListener(() -> {
if (notifier != null) {
notifier.onConstraintMet(REASON);
}
});
}
@Override
public void register(@NonNull Notifier notifier) {
this.notifier = notifier;
ApplicationDependencies.getIncomingMessageObserver().addDecryptionDrainedListener(() -> {
notifier.onConstraintMet(REASON);
});
}
}