Android操作系统能否以与启动器活动不同的活动启动应用程序?

Android操作系统能否以与启动器活动不同的活动启动应用程序?,android,operating-system,global,Android,Operating System,Global,我有一个应用程序显示了一些奇怪的错误。应用程序处于一种状态,其中一些全局数据为null,但不应为null(查看应用程序的逻辑,无法达到该状态)。我怀疑操作系统本身正在覆盖全局数据,或者正在重新启动我的应用程序(或启动我的应用程序)并绕过初始活动。这些情况中有任何一种是可能的吗?(当然,我的逻辑可能总是错误的,但在这一点上,我真的怀疑发生了什么事) 否,它总是以启动器标记开始搜索活动。 添加您的代码,并明确哪些全局数据获得空值:)我对此深表怀疑。启动器的概念是定义从操作系统接收启动意图的活动 根据

我有一个应用程序显示了一些奇怪的错误。应用程序处于一种状态,其中一些全局数据为null,但不应为null(查看应用程序的逻辑,无法达到该状态)。我怀疑操作系统本身正在覆盖全局数据,或者正在重新启动我的应用程序(或启动我的应用程序)并绕过初始活动。这些情况中有任何一种是可能的吗?(当然,我的逻辑可能总是错误的,但在这一点上,我真的怀疑发生了什么事)

否,它总是以启动器标记开始搜索活动。


添加您的代码,并明确哪些全局数据获得空值:)

我对此深表怀疑。启动器的概念是定义从操作系统接收启动意图的活动


根据您描述的行为进行猜测,您可能希望对活动生命周期进行一些研究。

启动器用于确定在应用程序启动时要启动的活动。。。。。因此我不认为这是可能的…

是的事实上,在各种情况下都会出现这种情况:

  • 如果你的应用程序进入后台,而Android最终为了回收资源而杀死了它,那么对用户来说,随后的返回可能看起来是无缝的,但实际上是在一个全新的应用程序过程中发生的。返回将直接返回到他们最后参与的活动,但是在一个新的过程中。包中其他活动(如启动程序活动)的onCreate()将不会被调用,除非用户导航或某个地方的意图明确地重新访问这些活动

  • 启动程序活动(即带有android.intent.category.Launcher的东西)不是应用程序中唯一的入口点。许多应用程序包含具有意图过滤器的活动,这些过滤器将它们注册为处理android.intent.action.VIEW,其类别为android.intent.category.DEFAULT,并指定它们可以处理的某种类型的内容。这类应用程序包中甚至可能根本没有启动程序活动(尽管可能包含一个用于浏览内容、设置配置选项或用于其他功能的启动程序活动)


  • 正如您所描述的,虽然结果在技术上可能是正确的,但原因是应用程序的backbackback仍保留在内存中(操作系统指针)。但是,当应用程序完全退出时,被定义为启动器活动的活动将被发送到意图。再次强调,这里应该考虑活动生命周期。如果您完全退出任务堆栈,那么是的。但是如果您转到其他地方,进程被终止,然后从历史记录中返回,您将不会看到重新创建的启动器活动。Try it-创建一个启动非启动程序活动的启动程序活动,并记录它们的onCreate()方法。发射,到第二个。然后按home并终止进程。现在使用history按钮返回到activity(活动)-您将在logcat中看到的结果是调用了第二个activity on create(并在新的流程id下记录),但launcher activity(启动程序活动)没有。但是,如果您在流程在屏幕上时终止了该流程,则可以从launcher activity(启动程序活动)重新启动。如果你在屏幕外杀死它,直接从历史记录中重新启动到第二个活动中,然后按back键,此时将创建启动器活动。对用户来说,它看起来总是在那里,但实际上它只是在需要时才被重新创建。这对我来说是非常有用的信息,我发现这并没有很好的文档记录(参考?)。非常感谢克里斯。至少现在我知道我必须考虑这个案例。它被记录在活动生命周期文档中。
     Can Android OS start app with different Activity than Launcher Activity?