gpt4 book ai didi

Android 应用程序类被调用两次

转载 作者:可可西里 更新时间:2023-11-01 18:53:52 25 4
gpt4 key购买 nike

在我的 Android 应用程序中,我重载了 Application 类,并更新了 list 中的标签。此应用程序还创建了一个 Android 服务。我在应用程序类的 onCreate 中放置了一些日志,我看到它被调用了两次。第一次是在我的应用程序启动时(这是预期的),然后通常是在创建服务之后。该日志还显示正在创建该应用程序的第二个实例。(我打印了“这个”值,它们是不同的)。

我认为该应用程序将创建为单例。这是因为我创建了服务吗?

最佳答案

是的,如果您使用了 android:process,那么您会在一个单独的进程中运行它,因此当服务启动时,会为其启动一个新进程,因此需要为该进程创建一个新的 Application 对象。

但是还有一个更根本的问题 - 应用程序对象启动其服务之一是不正确的。重要的是不要将应用程序与您对另一个操作系统中的“应用程序”的看法混淆。 Application 对象不驱动应用程序。它只是该过程中应用程序的全局状态。事实上,Application 对象完全是多余的——您永远都不需要它来编写 Android 应用程序。一般来说,我实际上建议人们不要使用它。它比其他任何东西都更容易引起麻烦。

另一种表达方式:真正定义应用程序的是它的 Activity 、服务、接收者和提供者标签的集合。这些就是“发射”的东西。所有应用程序都是作为初始化应用程序进程的一部分而创建的东西。它没有自己的生命周期,只是为应用程序中的其他实际组件提供服务。

因此,在设计您的应用程序时,请忽略应用程序;它会减少困惑。 (取而代之的是,我更喜欢对这种状态使用全局单例。)

此外,作为一般规则,我建议不要使用 android:process。它肯定有一些用途,但绝大多数时候不需要它,只会让应用程序使用更多 RAM,效率更低,更难编写(因为你不能在单个进程中利用全局变量) .如果您到达实际上有充分理由使用 android:process 的地方,这对您来说应该是显而易见的。

关于Android 应用程序类被调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3947052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com