Context.StartService(Intent) 方法

定义

请求启动给定的应用程序服务。

[Android.Runtime.Register("startService", "(Landroid/content/Intent;)Landroid/content/ComponentName;", "GetStartService_Landroid_content_Intent_Handler")]
public abstract Android.Content.ComponentName? StartService (Android.Content.Intent? service);
[<Android.Runtime.Register("startService", "(Landroid/content/Intent;)Landroid/content/ComponentName;", "GetStartService_Landroid_content_Intent_Handler")>]
abstract member StartService : Android.Content.Intent -> Android.Content.ComponentName

参数

service
Intent

标识要启动的服务。 意向必须完全显式 (提供组件名称) 。 其他值可以包含在意向附加内容中,以提供参数以及此特定开始调用。

返回

如果服务正在启动或已在运行, ComponentName 则返回已启动的实际服务的 ;否则,如果该服务不存在,则返回 null。

属性

例外

注解

请求启动给定的应用程序服务。 意向应包含要启动的特定服务实现的完整类名,或目标特定的包名称。 如果意向的指定较少,它会记录有关此的警告。 在这种情况下,可以使用任何多个匹配服务。 如果此服务尚未运行,则会将其实例化并启动, (根据需要为其创建进程) ;如果正在运行,则它仍保持运行状态。

每次调用此方法都会导致对目标服务的 方法进行 android.app.Service#onStartCommand 相应的调用,此处 <提供了 var>意向</var> 。 这提供了一种将作业提交到服务而无需绑定和调用其接口的便捷方法。

使用 startService () 会替代由 #bindService管理的默认服务生存期:它要求服务在调用之前 #stopService 保持运行,而不管是否有任何客户端连接到该服务。 请注意,对 startService () 的调用不会嵌套:无论调用 startService () 多少次,对 的单个调用 #stopService 都会停止它。

系统尝试尽可能多地运行服务。 唯一应停止它们的时间是,如果当前前台应用程序使用的资源太多,因此需要终止服务。 如果服务进程中发生任何错误,则会自动重启。

如果没有启动给定服务的权限,则此函数将引发 SecurityException

<div class=“caution”>

<strong>Note:</strong> 每次调用 startService () 会导致系统完成大量工作,以管理服务生命周期,围绕意向的处理,这可能需要数毫秒的 CPU 时间。 由于此成本,startService () 不应用于频繁向服务传递意向,而只能用于计划大量工作。 用于 #bindService bound services 高频率调用。

从 SDK 版本 android.os.Build.VERSION_CODES#O开始,不允许面向 SDK 版本 android.os.Build.VERSION_CODES#O 或更高版本的应用从后台启动后台服务。 请参阅

有关更多详细信息的后台执行限制。

<strong>注意:</strong> 从 SDK 版本 android.os.Build.VERSION_CODES#S开始,不允许面向 SDK 版本 android.os.Build.VERSION_CODES#S 或更高版本的应用从后台启动前台服务。 请参阅

行为更改:面向 Android 12 的应用

以获取更多详细信息。 </Div>

android.content.Context.startService(android.content.Intent)Java 文档。

此页面的部分内容是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的术语使用。

适用于

另请参阅

  • StopService(Intent)
  • <xref:Android.Content.Context.BindService(Android.Content.Intent%2c+Android.Content.IServiceConnection%2c+Android.Content.IServiceConnection)>