From 916e5cf89bf3b8025ba5b140f270df00a857e815 Mon Sep 17 00:00:00 2001 From: emanuele-f Date: Tue, 27 Dec 2022 22:51:49 +0100 Subject: [PATCH] Fix PCAP dialog shown on resume --- .../com/emanuelef/remote_capture/CaptureService.java | 1 + .../remote_capture/activities/MainActivity.java | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/emanuelef/remote_capture/CaptureService.java b/app/src/main/java/com/emanuelef/remote_capture/CaptureService.java index 3428690f..dcfe77e6 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/CaptureService.java +++ b/app/src/main/java/com/emanuelef/remote_capture/CaptureService.java @@ -1330,6 +1330,7 @@ public class CaptureService extends VpnService implements Runnable { private void updateServiceStatus(ServiceStatus cur_status) { // notify the observers + // NOTE: new subscribers will receive the STOPPED status right after their registration serviceStatus.postValue(cur_status); if(cur_status == ServiceStatus.STARTED) { diff --git a/app/src/main/java/com/emanuelef/remote_capture/activities/MainActivity.java b/app/src/main/java/com/emanuelef/remote_capture/activities/MainActivity.java index 6e57bd6a..175bb6a3 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/activities/MainActivity.java +++ b/app/src/main/java/com/emanuelef/remote_capture/activities/MainActivity.java @@ -93,6 +93,9 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig private NavigationView mNavView; private CaptureHelper mCapHelper; + // helps detecting duplicate state reporting of STOPPED in MutableLiveData + private boolean mWasStarted = false; + private static final String TAG = "Main"; private static final int POS_STATUS = 0; @@ -158,9 +161,10 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig CaptureService.observeStatus(this, serviceStatus -> { Log.d(TAG, "Service status: " + serviceStatus.name()); - if (serviceStatus == CaptureService.ServiceStatus.STARTED) + if (serviceStatus == CaptureService.ServiceStatus.STARTED) { appStateRunning(); - else /* STOPPED */ { + mWasStarted = true; + } else if(mWasStarted) { /* STARTED -> STOPPED */ // The service may still be active (on premature native termination) if (CaptureService.isServiceActive()) CaptureService.stopService(); @@ -179,7 +183,9 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig startExportSslkeylogfile(); appStateReady(); - } + mWasStarted = false; + } else /* STOPPED -> STOPPED */ + appStateReady(); }); }