IntentService的默认构造函数(kotlin)

时间:2016-11-24 08:23:54

标签: android kotlin intentservice android-intentservice

我是Kotlin的新手,并且使用intentService进行了一点点堆叠。 Manifest向我显示一个错误,我的服务不包含默认构造函数,但在服务内部它看起来没问题且没有错误。

这是我的intentService:

class MyService : IntentService {

    constructor(name:String?) : super(name) {
    }

    override fun onCreate() {
        super.onCreate()
    }

    override fun onHandleIntent(intent: Intent?) {
    }
}

我还尝试了另一种变体:

class MyService(name: String?) : IntentService(name) {

但是当我尝试运行此服务时,我仍然收到错误:

java.lang.Class<com.test.test.MyService> has no zero argument constructor

如何修复Kotlin中的默认构造函数?

谢谢!

1 个答案:

答案 0 :(得分:17)

正如here解释的那样,您的服务类需要具有无参数的consturctor。将您的实现更改为示例:

class MyService : IntentService("MyService") {
    override fun onCreate() {
        super.onCreate()
    }

    override fun onHandleIntent(intent: Intent?) {
    }
}

IntentService上的Android文档指出此名称仅用于调试:

  

name String:用于命名工作线程,仅对调试很重要。

虽然没有明确说明,但在上述文档页面中,框架需要能够实例化您的服务类,并期望有一个无参数的构造函数。