0

我遇到了一个非常奇怪的问题。

在我的应用程序的 MainActivity 中,通过单击我的菜单按钮之一,加载了一个名为 MyFragment 的新屏幕/片段。在 MyFragment 屏幕上有一个名为 MyButton 的按钮。如果单击 MyButton 按钮,它将在浏览器上打开一个链接。问题是,从浏览器中,如果我单击“返回设备”按钮,则行为会因我测试应用程序的设备而有很大不同(您都会同意它不应该):

  • 在三星 Galaxy Tab 2 平板电脑上,应用程序恢复到之前的状态,加载并打开了 MyFragment(就好像从我单击 MyButton 的那一刻起没有任何变化一样)。

  • 在 Nexus 4 手机上,该应用程序就像重置(然后未加载 MyFragment)。基本上之前的状态都丢失了。

任何想法 ?

这是我从 MyButton 点击​​事件中调用的一段代码。

Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse("http://www.example.com"));
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // I tried this but no luck
startActivity(i);

提前致谢。

4

2 回答 2

1

听起来在某些手机上,您的 Activity 被操作系统杀死了。如果 Android 需要回收它正在使用的资源,它有权终止任何进入后台的 Activity。这是预期的行为。为了缓解这种情况,您需要管理Activity Lifecycle。该页面要注意的重要一点是, onSaveInstanceState()如果操作系统即将终止您的活动,这将允许您保存状态,这将重新启动生命周期onCreate()并为您提供Bundle包含所有已保存状态信息的信息。

此外,片段有自己的生命周期,具有等效的onSaveInstanceState()方法,因此任何片段特定的信息都应该在那里管理。

于 2013-05-27T13:15:36.297 回答
0

答:在 Nexus 4“开发者选项”中,“不保留活动”选项设置为 true。这就是为什么...

于 2013-05-27T14:23:16.183 回答