我假设您了解活动生命周期的工作原理。我的意思是,您并没有试图避免在这里不适用的东西(认为它onCreate
可能会被多次调用,只要它只是onRestart
s 等等)。
从技术上讲,它完全没问题。
但是,如果根本不应该创建活动,那么您应该更多地担心为什么需要再次调用活动(“ A ”),如果那是您的想法。
如果您发现自己正在检查您的活动A是否已被“调用”(?),这可能意味着前一个活动(“ B ”)在应用程序的逻辑流程中存在错误,而B应该检查是否它实际上必须启动该活动A。我的意思是,如果您需要决定是否必须调用活动,请在开始之前进行检查。
如果您要重新启动活动(例如:回家,然后返回),我认为这不适用,但是您应该再次从离开的地方重新启动它(我可以告诉B )。您不会导航回A。而且你没有提供太多细节,所以我猜这是某种闪屏,就像 evilmage93 说的那样。
如果这确实是某种闪屏,我建议在用户一路返回以从任务堆栈中删除您的应用程序时显示它(与他的建议相反)。换句话说,每当用户从其“前门”重新启动应用程序时。
虽然这最终是一个设计决定,但我更喜欢在应用程序第一次在堆栈中加载(“进入”)时看到启动画面,如果您(显然)在调用B之前完成A(启动画面应该在完成后自动出现,即使在第一次运行时也是如此)。这是一个一致性问题:只要用户执行相同的任务(从其“前门”启动应用程序),相同的应用程序应该以相同的方式运行。finish
不过,我回答了您的问题,涵盖了一些一般方面,因为您以这种方式提问。
// 编辑:
最后,通过查看,onCreateWasCalledAlreadyBoolean
恐怕您可能正在尝试重新发明活动生命周期机制的一部分。在这种情况下,不要:继续您的常规活动逻辑,因为用户期望这种行为。一般来说,我不建议人们仅仅因为它被系统杀死并重新启动而中断活动的正常加载。