在Kotlin中使用单例并启动服务

a64a0gku  于 2023-01-31  发布在  Kotlin
关注(0)|答案(1)|浏览(183)

我试图让我的Service(前台服务)类像这样成为一个单例:

object MyClass: Service() {
}

当我这样做时,我无法像这样发送Intent来启动服务:

val mIntent = Intent(this, MyClass::class.java)
  mIntent.action = MyClass.ACTION_START_FOREGROUND_SERVICE;
  ContextCompat.startForegroundService(this, mIntent)

我得到了一个非法访问异常,如下所示:

Caused by: java.lang.IllegalAccessException: void com.it.gy.MyClass.<init>() is not accessible from java.lang.Class<android.app.AppComponentFactory>

这个异常应该是当类不是公共的时候引起的,但是,object MyClass在默认情况下应该是这样的。我可以把这个类变成公共的,并且用一个私有的构造函数来实现一个定制的单例,但是,我想尽可能的使用Kotlin语法。我该怎么做呢?

tkclm6bt

tkclm6bt1#

操作系统不支持您所需的内容。Service必须是class,因为Android将希望创建该类的示例。

相关问题