我遇到了一个非常奇怪的问题。
从我的应用程序的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);
提前致谢。
答案 0 :(得分:1)
听起来好像在某些手机上你的Activity被操作系统杀死了。如果Android需要回收它正在使用的资源,Android有权杀死后台的任何活动。这是预期的行为。要缓解这种情况,您需要管理Activity Lifecycle。从该页面需要注意的重要事项是onSaveInstanceState()
将允许您在操作系统即将杀死您的活动时保存您的状态,这将使用onCreate()
重新启动生命周期并为您提供{{ 1}}包含所有已保存的状态信息。
此外,fragments have their own lifecycle使用等效的Bundle
方法,因此应该在那里管理任何特定于片段的信息。
答案 1 :(得分:0)
答案:在Nexus 4“开发者选项”中,“不要保持活动”选项设置为true。这就是为什么......