android: Avoid IllegalStateException in state fragments
This happened if the state service got connected while such a fragment was not visible (anymore or at all).
This commit is contained in:
+8
-1
@@ -49,6 +49,7 @@ public class ImcStateFragment extends Fragment implements VpnStateListener
|
|||||||
{
|
{
|
||||||
private int mColorIsolate;
|
private int mColorIsolate;
|
||||||
private int mColorBlock;
|
private int mColorBlock;
|
||||||
|
private boolean mVisible;
|
||||||
private TextView mStateView;
|
private TextView mStateView;
|
||||||
private TextView mAction;
|
private TextView mAction;
|
||||||
private LinearLayout mButton;
|
private LinearLayout mButton;
|
||||||
@@ -65,7 +66,11 @@ public class ImcStateFragment extends Fragment implements VpnStateListener
|
|||||||
public void onServiceConnected(ComponentName name, IBinder service)
|
public void onServiceConnected(ComponentName name, IBinder service)
|
||||||
{
|
{
|
||||||
mService = ((VpnStateService.LocalBinder)service).getService();
|
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()
|
public void onResume()
|
||||||
{
|
{
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
mVisible = true;
|
||||||
if (mService != null)
|
if (mService != null)
|
||||||
{
|
{
|
||||||
mService.registerListener(this);
|
mService.registerListener(this);
|
||||||
@@ -160,6 +166,7 @@ public class ImcStateFragment extends Fragment implements VpnStateListener
|
|||||||
public void onPause()
|
public void onPause()
|
||||||
{
|
{
|
||||||
super.onPause();
|
super.onPause();
|
||||||
|
mVisible = false;
|
||||||
if (mService != null)
|
if (mService != null)
|
||||||
{
|
{
|
||||||
mService.unregisterListener(this);
|
mService.unregisterListener(this);
|
||||||
|
|||||||
+8
-2
@@ -46,6 +46,7 @@ public class VpnStateFragment extends Fragment implements VpnStateListener
|
|||||||
{
|
{
|
||||||
private static final String KEY_ERROR_CONNECTION_ID = "error_connection_id";
|
private static final String KEY_ERROR_CONNECTION_ID = "error_connection_id";
|
||||||
|
|
||||||
|
private boolean mVisible;
|
||||||
private TextView mProfileNameView;
|
private TextView mProfileNameView;
|
||||||
private TextView mProfileView;
|
private TextView mProfileView;
|
||||||
private TextView mStateView;
|
private TextView mStateView;
|
||||||
@@ -72,8 +73,11 @@ public class VpnStateFragment extends Fragment implements VpnStateListener
|
|||||||
public void onServiceConnected(ComponentName name, IBinder service)
|
public void onServiceConnected(ComponentName name, IBinder service)
|
||||||
{
|
{
|
||||||
mService = ((VpnStateService.LocalBinder)service).getService();
|
mService = ((VpnStateService.LocalBinder)service).getService();
|
||||||
mService.registerListener(VpnStateFragment.this);
|
if (mVisible)
|
||||||
updateView();
|
{
|
||||||
|
mService.registerListener(VpnStateFragment.this);
|
||||||
|
updateView();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
private OnClickListener mDisconnectListener = new OnClickListener()
|
private OnClickListener mDisconnectListener = new OnClickListener()
|
||||||
@@ -154,6 +158,7 @@ public class VpnStateFragment extends Fragment implements VpnStateListener
|
|||||||
public void onStart()
|
public void onStart()
|
||||||
{
|
{
|
||||||
super.onStart();
|
super.onStart();
|
||||||
|
mVisible = true;
|
||||||
if (mService != null)
|
if (mService != null)
|
||||||
{
|
{
|
||||||
mService.registerListener(this);
|
mService.registerListener(this);
|
||||||
@@ -165,6 +170,7 @@ public class VpnStateFragment extends Fragment implements VpnStateListener
|
|||||||
public void onStop()
|
public void onStop()
|
||||||
{
|
{
|
||||||
super.onStop();
|
super.onStop();
|
||||||
|
mVisible = false;
|
||||||
if (mService != null)
|
if (mService != null)
|
||||||
{
|
{
|
||||||
mService.unregisterListener(this);
|
mService.unregisterListener(this);
|
||||||
|
|||||||
Reference in New Issue
Block a user