Конструктор по умолчанию для 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 ответ:
Как объяснено здесь Ваш класс обслуживания должен иметь непараметрический констурктор. Измените свою реализацию на в примере:
class MyService : IntentService("MyService") { override fun onCreate() { super.onCreate() } override fun onHandleIntent(intent: Intent?) { } }
Документация Android по IntentService утверждает, что это имя используется только для отладки:
name
String
: используется для обозначения рабочего потока, важного только для отладки.Хотя это и не указано явно, на упомянутой странице документации фреймворк должен иметь возможность создавать экземпляры вашего класс обслуживания и ожидает, что будет конструктор без параметров.