我想在kotlin中启动一个Intent服务,但我的服务有一个参数,即一个presenter对象。现在我们需要一个默认的no arg构造函数用于intent服务。我怎样才能在kotlin中实现这一目标?
有没有办法可以重载构造函数?我不认为我可以在构造函数
中为演示者传递默认值class SongIdentifyService(discoverPresenter : DiscoverPresenter) : IACRCloudListener , IntentService("SongIdentifyService") {
private val callback : SongIdentificationCallback = discoverPresenter
private val mClient : ACRCloudClient by lazy(LazyThreadSafetyMode.NONE) { ACRCloudClient() }
private val mConfig : ACRCloudConfig by lazy(LazyThreadSafetyMode.NONE) { ACRCloudConfig() }
private var initState : Boolean = false
private var mProcessing : Boolean = false
override fun onHandleIntent(intent: Intent?) {
setUpConfig()
addConfigToClient()
startIdentification(callback)
}
}
答案 0 :(得分:2)
你可以有两个这样的辅助构造函数(简化):
class SongIdentifyService {
constructor(discoverPresenter: DiscoverPresenter)
constructor()
}
或者使discoverPresenter可以为空并给它一个默认值:
class SongIdentifyService(discoverPresenter: DiscoverPresenter? = null)