diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2352c3bb..82336653 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -37,7 +37,7 @@ + android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|fontScale|uiMode" > diff --git a/app/src/main/java/com/limelight/AppView.java b/app/src/main/java/com/limelight/AppView.java index 92fd4c3b..f567cfe5 100644 --- a/app/src/main/java/com/limelight/AppView.java +++ b/app/src/main/java/com/limelight/AppView.java @@ -96,9 +96,25 @@ public class AppView extends Activity implements AdapterFragmentCallbacks { // Load the app grid with cached data (if possible) populateAppGridWithCache(); - getFragmentManager().beginTransaction() - .replace(R.id.appFragmentContainer, new AdapterFragment()) - .commitAllowingStateLoss(); + runOnUiThread(new Runnable() { + @Override + public void run() { + if (isFinishing() || isChangingConfigurations()) { + return; + } + + // Despite my best efforts to catch all conditions that could + // cause the activity to be destroyed when we try to commit + // I haven't been able to, so we have this try-catch block. + try { + getFragmentManager().beginTransaction() + .replace(R.id.appFragmentContainer, new AdapterFragment()) + .commitAllowingStateLoss(); + } catch (IllegalStateException e) { + e.printStackTrace(); + } + } + }); } }.start(); } @@ -108,17 +124,6 @@ public class AppView extends Activity implements AdapterFragmentCallbacks { } }; - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - - getFragmentManager().beginTransaction() - .replace(R.id.appFragmentContainer, new AdapterFragment()) - .commitAllowingStateLoss(); - - appGridAdapter.notifyDataSetChanged(); - } - private void startComputerUpdates() { // Don't start polling if we're not bound or in the foreground if (managerBinder == null || !inForeground) {