在活动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 -> onResume
和onStop -> onRestart -> onStart -> onResume
)