Kotlin的意向服务

时间:2018-04-06 17:27:06

标签: android kotlin

我想在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)
   }

}

1 个答案:

答案 0 :(得分:2)

你可以有两个这样的辅助构造函数(简化):

class SongIdentifyService {
    constructor(discoverPresenter: DiscoverPresenter)
    constructor()
}

或者使discoverPresenter可以为空并给它一个默认值:

class SongIdentifyService(discoverPresenter: DiscoverPresenter? = null)