如何在 MVVM 中使用 LocationListener?
How to use LocationListener in MVVM?
我想让应用程序以 MVVM 模式慢跑,但我不知道将 LocationListener 放在哪里。如何正确使用 LocationListener 和 MVVM?存储库?
为了测试,我创建了这样的东西。这只是检查操作的测试,它工作正常,但这不是 MVVM。
class GPSLocationListener(private var activity: MainActivity) : LocationListener {
lateinit var location: Location
override fun onLocationChanged(location: Location?) {
val speed : Double = (location!!.speed * 3600 / 1000).toDouble()
activity.updateUI(speed)
this.location = location
}
override fun onStatusChanged(provider: String?, status: Int, extras: Bundle?) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun onProviderEnabled(provider: String?) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun onProviderDisabled(provider: String?) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
}
传递 view(main activity) 对 GPSLocationListener
的引用是错误的做法,因为它可能是内存泄漏的原因(看看 this 关于内存泄漏就明白了更好)
另一方面,监听设备的位置与 Android 平台 相关,因此应在 activity
或 fragment
[= 中处理14=]
如果您将根据位置请求的结果执行繁重的操作,您应该将视图模型与 RxJava 或协程一起使用,然后您应该在视图中收听数据(包装在 LiveData 中)(activity -片段)
我想让应用程序以 MVVM 模式慢跑,但我不知道将 LocationListener 放在哪里。如何正确使用 LocationListener 和 MVVM?存储库? 为了测试,我创建了这样的东西。这只是检查操作的测试,它工作正常,但这不是 MVVM。
class GPSLocationListener(private var activity: MainActivity) : LocationListener {
lateinit var location: Location
override fun onLocationChanged(location: Location?) {
val speed : Double = (location!!.speed * 3600 / 1000).toDouble()
activity.updateUI(speed)
this.location = location
}
override fun onStatusChanged(provider: String?, status: Int, extras: Bundle?) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun onProviderEnabled(provider: String?) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun onProviderDisabled(provider: String?) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
}
传递 view(main activity) 对 GPSLocationListener
的引用是错误的做法,因为它可能是内存泄漏的原因(看看 this 关于内存泄漏就明白了更好)
另一方面,监听设备的位置与 Android 平台 相关,因此应在 activity
或 fragment
[= 中处理14=]
如果您将根据位置请求的结果执行繁重的操作,您应该将视图模型与 RxJava 或协程一起使用,然后您应该在视图中收听数据(包装在 LiveData 中)(activity -片段)