Конструктор по умолчанию для IntentService (kotlin)


Я новичок с Kotlin и немного стек с intentService. Манифест показывает мне ошибку, что моя служба не содержит конструктор по умолчанию, но внутри службы он выглядит нормально и ошибок нет.

Вот мой 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 6

1 ответ:

Как объяснено здесь Ваш класс обслуживания должен иметь непараметрический констурктор. Измените свою реализацию на в примере:

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

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

Документация Android по IntentService утверждает, что это имя используется только для отладки:

name String: используется для обозначения рабочего потока, важного только для отладки.

Хотя это и не указано явно, на упомянутой странице документации фреймворк должен иметь возможность создавать экземпляры вашего класс обслуживания и ожидает, что будет конструктор без параметров.