在 Android 中启动服务调用应用程序 onCreate
Starting Service in Android calls Applications onCreate
我正在使用 android 服务,
startService(getApplicationContext(), MyService.class);
我已经在 AndroidManifest 中正确定义了我的服务。现在,我从应用程序创建中调用上面的代码。
案例 1:从应用程序 onCreate() 调用以上代码
- 我看到 Application.onCreate() 被调用了两次。一种是所需的应用程序创建,另一种是在调用 startService 时发生的。
案例 2:在应用程序Activity中调用以上代码
- 与案例 1 相同的行为。
这是有意为之的行为吗?
我的 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 加载器。因此,即使是它们的静态变量也可以有不同的值。
我正在使用 android 服务,
startService(getApplicationContext(), MyService.class);
我已经在 AndroidManifest 中正确定义了我的服务。现在,我从应用程序创建中调用上面的代码。
案例 1:从应用程序 onCreate() 调用以上代码
- 我看到 Application.onCreate() 被调用了两次。一种是所需的应用程序创建,另一种是在调用 startService 时发生的。
案例 2:在应用程序Activity中调用以上代码
- 与案例 1 相同的行为。
这是有意为之的行为吗?
我的 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 加载器。因此,即使是它们的静态变量也可以有不同的值。