【发布时间】:2012-02-01 00:58:32
【问题描述】:
我在使用我一直在开发的 Android 应用程序时遇到了一些奇怪的行为,发生了以下情况:
- 我用了一段时间,运行良好,没有问题
- 我通过单击 android 主页按钮“暂停”应用程序
- 我在手机上使用了一些其他应用程序几分钟
- 我回到我的应用程序,它似乎处于一个非常奇怪的状态,FragmentActivity 丢失了,但最后显示的 Fragment 仍然显示。当我从 Fragment 调用“getActivity()”时,它返回 null,这会导致问题(因为我需要返回 FragmentActivity 的引用。
知道为什么应用程序暂停一段时间后 FragmentActivity 会丢失,我认为这是某种垃圾收集问题,但通常不会破坏整个应用程序而不仅仅是 FragmentActivity?
注意事项:
- 我正在使用兼容性库
- 我正在使用 viewpage 指示器(但我认为这与问题无关) - https://github.com/JakeWharton/Android-ViewPagerIndicator
注意:当我从清单中的活动元素中删除我的android:configChanges="orientation|keyboardHidden|screenSize" 并进行方向更改时,我也可以轻松地重现此问题。
所以我假设它不会在活动娱乐后保持视图状态。
onSaveInstanceState 和 onRestoreInstanceState 调用正常,并且在片段上设置了 setRetainInstance(true);,所以我不确定为什么会发生这种情况。
【问题讨论】:
-
我目前遇到了这个确切的问题。你有没有找到任何解决办法?我也在使用没有 ViewPagerIndicator 的兼容性库,所以我认为我们可以排除 ViewPagerIndicator。
-
不久前我做了一个狡猾的解决方法,因为我无法弄清楚。我刚刚使用 FLAG_ACTIVITY_CLEAR_TOP 标志重新启动了一个新活动,并在 onRestoreInstanceState 方法中完成了当前活动.. 我喜欢 antonyt 方法.. 我试一试。
标签: android mobile android-viewpager android-support-library