diff --git a/app/src/main/java/com/gh/base/BaseActivity.java b/app/src/main/java/com/gh/base/BaseActivity.java index 7dfc705f58..9814ff05d5 100644 --- a/app/src/main/java/com/gh/base/BaseActivity.java +++ b/app/src/main/java/com/gh/base/BaseActivity.java @@ -68,7 +68,6 @@ import java.util.List; import butterknife.ButterKnife; import kotlin.Pair; -import kotlin.Unit; import pub.devrel.easypermissions.EasyPermissions; import static com.gh.common.util.EntranceUtils.KEY_ENTRANCE; @@ -490,12 +489,31 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements Easy @Override protected void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); + + if (preventRecreateFragmentByFragmentManager()) { + outState = discardFragmentFromSaveInstanceState(outState); + } + long bundleSize = getBundleSize(outState); if (bundleSize > MAX_BUNDLE_SIZE * 1024) { outState.clear(); } } + /** + * 是否停用 Activity 重建时 FragmentManager 根据 saveState 自动重建保存的 Fragment 的功能 + */ + protected boolean preventRecreateFragmentByFragmentManager() { + return false; + } + + private Bundle discardFragmentFromSaveInstanceState(Bundle outState) { + if (outState != null) { + outState.remove("android:support:fragments"); + } + return outState; + } + private long getBundleSize(Bundle bundle) { long dataSize; Parcel obtain = Parcel.obtain(); diff --git a/app/src/main/java/com/gh/gamecenter/LibaoDetailActivity.java b/app/src/main/java/com/gh/gamecenter/LibaoDetailActivity.java index 663a521a9b..89c8f670ae 100644 --- a/app/src/main/java/com/gh/gamecenter/LibaoDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/LibaoDetailActivity.java @@ -51,6 +51,7 @@ import com.lightgame.utils.Utils; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; +import org.jetbrains.annotations.NotNull; import java.text.SimpleDateFormat; import java.util.Calendar; @@ -180,7 +181,7 @@ public class LibaoDetailActivity extends ToolBarActivity implements LibaoDetailA } @Override - protected void onSaveInstanceState(Bundle outState) { + protected void onSaveInstanceState(@NotNull Bundle outState) { super.onSaveInstanceState(outState); HaloApp.put(LibaoEntity.TAG, mAdapter.getLibaoEntity()); } diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index a0ae89e458..20e74b1c32 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -103,6 +103,7 @@ import com.lightgame.utils.Utils; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; +import org.jetbrains.annotations.NotNull; import org.json.JSONObject; import java.io.BufferedReader; @@ -696,7 +697,7 @@ public class MainActivity extends BaseActivity { } @Override - protected void onSaveInstanceState(Bundle outState) { + protected void onSaveInstanceState(@NotNull Bundle outState) { super.onSaveInstanceState(outState); outState.putInt(CURRENT_PAGE, mMainWrapperFragment.getCurrentItem()); if (mMainWrapperFragment != null) { @@ -704,6 +705,11 @@ public class MainActivity extends BaseActivity { } } + @Override + protected boolean preventRecreateFragmentByFragmentManager() { + return true; + } + @Override protected int getLayoutId() { if (showAd) {