gpt4 book ai didi

android - 在 Android 中启动服务调用应用程序 onCreate

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:47:09 27 4
gpt4 key购买 nike

我正在使用,启动一个 android 服务,

startService(getApplicationContext(), MyService.class);

我已经在 AndroidManifest 中正确定义了我的服务。现在,我从应用程序创建中调用上面的代码。

案例 1:从 Application onCreate() 调用上面的代码

  • 我看到 Application.onCreate() 被调用了两次。一种是创建所需的应用程序,另一种是在调用 startService 时发生。

案例2:从应用中的Activity调用上面的代码

  • 与案例 1 相同的行为。

这是有意为之的行为吗?

我要求的 Android list 代码:

    <service
android:exported="false"
android:enabled="true"
android:name=".MyService"
android:process=".MyService">
</service>

最佳答案

由于您指定了 android:process <service> 中的属性元素,并且它的值与您的应用程序包名称不同,则该服务实际上在与您的应用程序的默认进程不同的进程中运行。 (我不知道这是不是故意的,但你的进程名称似乎也有错别字。)

如果您不打算在单独的进程中运行该服务(这种情况很少见,并且只有在您有充分理由并理解其含义的情况下才应该这样做),您应该省略 android:process <service> 中的属性元素——这将导致它与您的应用程序的其余部分在同一进程中运行。

Android 的一个鲜为人知且看似未记录的行为是应用程序的每个进程都有自己的 Application实例。这解释了为什么启动您的服务会创建额外的 Application实例。

此外,这 2 个进程不仅有自己的 Application 实例,它们实际上还有自己的 Application 类,因为它们甚至不共享相同的类加载器。因此,即使是它们的静态变量也可以有不同的值。

关于android - 在 Android 中启动服务调用应用程序 onCreate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30315165/

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