ViewModel中的Kotlin singleton getter

时间:2018-03-26 21:11:08

标签: android kotlin

我正在学习Android架构组件。如何使用Kotlin实现singleton getInstance()方法?我这样做是使用类似Java的样式(getLocation),但它不像kotlin那样。

class LocationViewModel: ViewModel() {
        lateinit var locationData: MyLocationListener

        fun getLocation(context: Context): MyLocationListener {
            locationData = MyLocationListener(context)
            return locationData
        }
    }

1 个答案:

答案 0 :(得分:3)

你不应该真正使用make ViewModels作为单例 - 它们的范围应该是创建它们的Activity / Fragment的生命周期。

如果要公开MyLocationListener实例,可以使用AndroidViewModel类 - 这使您可以访问可用作上下文的应用程序类。

class LocationViewModel(application: Application): AndroidViewModel(application) {
    val locationData = MyLocationListener(application)
}