diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/ImcStateFragment.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/ImcStateFragment.java index c6a80a100..a3cb245e8 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/ImcStateFragment.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/ImcStateFragment.java @@ -49,6 +49,7 @@ public class ImcStateFragment extends Fragment implements VpnStateListener { private int mColorIsolate; private int mColorBlock; + private boolean mVisible; private TextView mStateView; private TextView mAction; private LinearLayout mButton; @@ -65,7 +66,11 @@ public class ImcStateFragment extends Fragment implements VpnStateListener public void onServiceConnected(ComponentName name, IBinder service) { mService = ((VpnStateService.LocalBinder)service).getService(); - mService.registerListener(ImcStateFragment.this); + if (mVisible) + { + mService.registerListener(ImcStateFragment.this); + updateView(); + } } }; @@ -149,6 +154,7 @@ public class ImcStateFragment extends Fragment implements VpnStateListener public void onResume() { super.onResume(); + mVisible = true; if (mService != null) { mService.registerListener(this); @@ -160,6 +166,7 @@ public class ImcStateFragment extends Fragment implements VpnStateListener public void onPause() { super.onPause(); + mVisible = false; if (mService != null) { mService.unregisterListener(this); diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnStateFragment.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnStateFragment.java index 4042eb761..9c92463de 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnStateFragment.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnStateFragment.java @@ -46,6 +46,7 @@ public class VpnStateFragment extends Fragment implements VpnStateListener { private static final String KEY_ERROR_CONNECTION_ID = "error_connection_id"; + private boolean mVisible; private TextView mProfileNameView; private TextView mProfileView; private TextView mStateView; @@ -72,8 +73,11 @@ public class VpnStateFragment extends Fragment implements VpnStateListener public void onServiceConnected(ComponentName name, IBinder service) { mService = ((VpnStateService.LocalBinder)service).getService(); - mService.registerListener(VpnStateFragment.this); - updateView(); + if (mVisible) + { + mService.registerListener(VpnStateFragment.this); + updateView(); + } } }; private OnClickListener mDisconnectListener = new OnClickListener() @@ -154,6 +158,7 @@ public class VpnStateFragment extends Fragment implements VpnStateListener public void onStart() { super.onStart(); + mVisible = true; if (mService != null) { mService.registerListener(this); @@ -165,6 +170,7 @@ public class VpnStateFragment extends Fragment implements VpnStateListener public void onStop() { super.onStop(); + mVisible = false; if (mService != null) { mService.unregisterListener(this);