重新加载片段从Intent返回Activity

时间:2013-05-27 13:02:08

标签: android android-intent android-activity stack fragment

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

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

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

    < / LI> 在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);

提前致谢。

2 个答案:

答案 0 :(得分:1)

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

此外,fragments have their own lifecycle使用等效的Bundle方法,因此应该在那里管理任何特定于片段的信息。

答案 1 :(得分:0)

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