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:
parent
bc52868173
commit
0d9dd4b150
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue