背景
我正在开发的应用程序上至少有 2 个活动:一个启动活动和一个主要活动。飞溅活动调用主要活动。
在某些情况下(现在让我们假设它只是应用程序的第一次运行),启动活动会在意图为真时添加一个布尔额外(使用 intent.putExtra),并且主要活动使用以下方式读取它:
getIntent().getBooleanExtra(...,false);
问题
我只希望在启动活动后打开主要活动时看到该标志为真。
这就是为什么我试图只调用(在 onCreate 中,在我得到标志之后):
getIntent().removeExtra(...);
另一种方法(根据本网站)是:
final Intent newIntent = new Intent();
setIntent(newIntent);
另一种方法可能是:
getIntent().putExtra(..., false);
这些都不起作用:出于某种原因,在某些情况下,该标志仍然返回为真。
例如,我可以按下主页按钮(当主要活动在前台时),然后我启动一个繁重的应用程序(如割绳子游戏或基准应用程序),然后使用返回到应用程序发射器。
在这种情况下(并不总是发生),不会显示启动活动,而是显示主要活动。它再次调用 onCreate ,而标志本身仍设置为 true 。
问题
为什么会发生?为什么意图没有被重置?
有没有办法以优雅的方式克服这个问题?
当“savedInstanceState”不为空时忽略该标志是否安全?