Я отправляю данные о местоположении с помощью подпрограмм в workmanager. Я пробовал просто использовать workmanager, но он не выполняет асинхронную работу. Я пробовал ListenableWorkmanager, но это было слишком сложно для меня, поэтому я пытаюсь использовать сопрограммы.
override fun doWork(): Result {
CoroutineScope(IO).launch {
val location = work()
fusedLocationClient!!.removeLocationUpdates(locationCallback)
string = logData(location)
}
return if(JSONObject(string).get("status") == "1"){
Result.success()
}else{
Result.retry()
}
}
У меня возникли проблемы с возвратом местоположения из функции work
private suspend fun work():Location{
...............
fusedLocationClient!!.lastLocation.addOnSuccessListener { location ->
if (location != null) {
mCurrentLocation = location
// how do I send this location back to the fuction??
}
}.addOnFailureListener {
mLog.i(TAG, it.message)
}
return mCurrentLocation // if I do this could be a null right?
}