Size: a a a

AndroidDev :: Разработка. It's Android time now!

2020 September 03

С

Сергей in AndroidDev :: Разработка. It's Android time now!
Valentin Volodarskij
Создай отдельный класс, который будет ответственный за локацию. И там к примеру будут методы locationsEnabled() и getLocations(), ну и уже делай проверку и дальше выполняй необходимое действие
Создал ) он называется locationProvider,
он получает координаты из fusedLocationClient ))
обрабатывает их через geocoder и отдаёт LocationEntity,
источник

VV

Valentin Volodarskij in AndroidDev :: Разработка. It's Android time now!
Ну, координаты достаются теперь правильно?
источник

VV

Valentin Volodarskij in AndroidDev :: Разработка. It's Android time now!
Если эту проблему ты решил, то кто мешает передать координаты в запрос?😄
источник

С

Сергей in AndroidDev :: Разработка. It's Android time now!
Valentin Volodarskij
Если эту проблему ты решил, то кто мешает передать координаты в запрос?😄
я их и передаю используя свой locationProvider иначе никак )
но не понятно как при этом и сам location отдать во фрагмент,
чтобы вывести название города в toobar )
источник

С

Сергей in AndroidDev :: Разработка. It's Android time now!
😉
источник

VV

Valentin Volodarskij in AndroidDev :: Разработка. It's Android time now!
Самый простой пример, который только смог выдумать

class ForecastViewModel(
       val locationProvider: ILocationProvider,
       val remoteSource: RemoteForecastSource
): ViewModel() {

   private val _locations: MutableLiveData<Location> = MutableLiveData()
   val location: LiveData<Location>
       get() = _locations

   private val _forecast: MutableLiveData<Forecast> = MutableLiveData()
   val forecast: LiveData<Forecast>
       get() = _forecast

   init {
       updateLocations()
   }

   private fun updateLocations() {
       viewModelScope.launch{
           _locations.value = locationProvider.getLocations()
       }
   }

   fun getCurrentWeather(location: LatLng) {
       viewModelScope.launch{
           _forecast.value = obtainRemoteForecast(location)
       }
   }

   private suspend fun obtainRemoteForecast(location: LatLng) = withContext(Dispatchers.IO) {
       remoteSource.getCurrentForecast(location.lat, location.lon)
   }

}
источник

С

Сергей in AndroidDev :: Разработка. It's Android time now!
Valentin Volodarskij
Самый простой пример, который только смог выдумать

class ForecastViewModel(
       val locationProvider: ILocationProvider,
       val remoteSource: RemoteForecastSource
): ViewModel() {

   private val _locations: MutableLiveData<Location> = MutableLiveData()
   val location: LiveData<Location>
       get() = _locations

   private val _forecast: MutableLiveData<Forecast> = MutableLiveData()
   val forecast: LiveData<Forecast>
       get() = _forecast

   init {
       updateLocations()
   }

   private fun updateLocations() {
       viewModelScope.launch{
           _locations.value = locationProvider.getLocations()
       }
   }

   fun getCurrentWeather(location: LatLng) {
       viewModelScope.launch{
           _forecast.value = obtainRemoteForecast(location)
       }
   }

   private suspend fun obtainRemoteForecast(location: LatLng) = withContext(Dispatchers.IO) {
       remoteSource.getCurrentForecast(location.lat, location.lon)
   }

}
спасибо 👍 попробую.
правда у меня это всё в репозитории.
источник

VV

Valentin Volodarskij in AndroidDev :: Разработка. It's Android time now!
Подставь репозиторий, вместо RemoteForecastSource
источник

ЮЛ

Юрий Лещенко... in AndroidDev :: Разработка. It's Android time now!
источник

ЮЛ

Юрий Лещенко... in AndroidDev :: Разработка. It's Android time now!
Человек высказал свои наблюдения по поводу котлина, и есть тут истина)
источник

ЮЛ

Юрий Лещенко... in AndroidDev :: Разработка. It's Android time now!
Я давно говорил что котлин работает медленней джавы)
источник

ЮЛ

Юрий Лещенко... in AndroidDev :: Разработка. It's Android time now!
Прежде чем писать на котлине изучите как отче наш джаву) а не наоборот))
источник

ЮЛ

Юрий Лещенко... in AndroidDev :: Разработка. It's Android time now!
Valentin Volodarskij
Rx базука, но если ее использовать, чтоб просто перенести запрос в другой поток, то от этой базуки толку мало. У корутин есть flow и channel, которые не прям суперски идеальны еще, но достаточно хорошая альтернатива для rx
Когда пишут правильно с рх , и правильно строят архитектуру под реактивное программирование, то там не только потоки изменяются))) у меня проект большой написан на 80% в реактивном стиле с сабжектами итд)))
источник

VV

Valentin Volodarskij in AndroidDev :: Разработка. It's Android time now!
Я говорил касательно вопроса, который возник у него. Человек пытается разбираться на базовом уровне и выполняет какие-то базовые операции, зачем ему сейчас изучать Rx, чтоб просто сменить поток исполнения? Ты будешь вызывать танк, чтоб убить комара? :)
источник

ЮЛ

Юрий Лещенко... in AndroidDev :: Разработка. It's Android time now!
Valentin Volodarskij
Я говорил касательно вопроса, который возник у него. Человек пытается разбираться на базовом уровне и выполняет какие-то базовые операции, зачем ему сейчас изучать Rx, чтоб просто сменить поток исполнения? Ты будешь вызывать танк, чтоб убить комара? :)
У него идёт я так понимаю работа с запросами и работа с бд, плюс ещё и координаты берет, в этой системе самый лучший способ использования рх, и не из за потоков а из за наблюдателей
источник

ЮЛ

Юрий Лещенко... in AndroidDev :: Разработка. It's Android time now!
Но самому ему будет очень тяжко изучить его, я год изучал рх и то в бою)))
источник

ЮЛ

Юрий Лещенко... in AndroidDev :: Разработка. It's Android time now!
Там при незнание можно ногу себе отстрелить)))
источник

ЮЛ

Юрий Лещенко... in AndroidDev :: Разработка. It's Android time now!
Мне кажется многие на котлин перебежали из за незнания рх)))
источник

ЮЛ

Юрий Лещенко... in AndroidDev :: Разработка. It's Android time now!
Я котлин использую только в АОП стиле, для ООП я юзаю джаву)
источник

ЮЛ

Юрий Лещенко... in AndroidDev :: Разработка. It's Android time now!
Valentin Volodarskij
Я говорил касательно вопроса, который возник у него. Человек пытается разбираться на базовом уровне и выполняет какие-то базовые операции, зачем ему сейчас изучать Rx, чтоб просто сменить поток исполнения? Ты будешь вызывать танк, чтоб убить комара? :)
И да почему бы и нет использовать рх для смены потока? Вчем проблема?)
источник