在活动B中,我具有“帮助”选项,该选项可在Web浏览器中打开URL。从Web浏览器返回(带有返回键)时,将重新创建活动。为什么会发生这种情况以及如何防止这种情况发生?

编辑:
这就是我所说的网络浏览器:

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.help_url)));
startActivity(browserIntent);


从浏览器返回时,调用onCreate();

我的逻辑操作:启动应用程序时,活动A读取设置并将其写入活动/类C。之后,我开始活动B和finish()活动A。在活动B中,onCreate()方法正在从活动C中读取一些设置。

最佳答案

为此,必须在启动浏览器之前完成Activity

将您的代码更改为:

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.help_url)));
finish(); // should be called from your current activity
startActivity(browserIntent);


Android不会存储来自当前Activity的其他所有信息(例如到WebBrowser),因此必须重新创建活动才能再次显示。

如果从Activity返回后仍然需要此WebBrowser,则无法阻止Android重新创建它。您应该保存所有需要覆盖的onSaveInstanceState并使用Activity重新创建savedInstanceState

Activity lifecycle。当Android需要为其他进程释放一些内存时,它可能会杀死您的应用程序(在后台)。还有其他可能的路径可以返回到您的Activity运行状态,而不会重新创建它。 (onPause -> onResumeonStop -> onRestart -> onStart -> onResume

10-07 19:44
查看更多