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

Starting Service in Android calls Applications onCreate

我正在使用 android 服务,

startService(getApplicationContext(), MyService.class);

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

案例 1:从应用程序 onCreate() 调用以上代码

案例 2:在应用程序Activity中调用以上代码

这是有意为之的行为吗?

我的 Android 要求的清单代码:

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

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

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

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

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