Kotlin Android启动新服务

14

使用以下代码,我正在尝试从Broadcast receiver启动新服务,但是服务似乎没有启动。在kotlin中启动一个服务的正确方法是什么?

val intent = Intent(context, LocationService::class.java)
 if (context != null) {
      context.startService(intent)
 }

服务是否在清单中注册? - shelll
1
请确保startService返回非空值,这将表明服务已经启动。请注意,在Android O中,startService已被弃用,并且对于targetSdk 26会抛出异常。 - Miha_x64
4个回答

16

试一试

 val intent = Intent(context, LocationService::class.java)
 if (context != null) {
      context.startService(intent)
 }

别忘记在 manifest 文件中注册你的 service

 <service  android:name="packageName.LocationService"/>

5

在 Kotlin 中使用安全访问压缩:

val intent = Intent(context, LocationService::class.java)
context?.startService(intent)

同时在您的清单中定义您的服务。


1
你需要在AndroidManifest.xml中声明你的服务。
<manifest ...>
   <application ...>
      <service
          android:name="package.LocationService">
      </service>
   </application>
</manifest>

1
请在 AndroidManifest.xml 文件中放置服务声明,例如 <service android:name=".LocationService"/>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接