Код отрабатывает нормально только в дебаггера , при простом запуске не отрабатывает

Я подключил Yandex map kit к anroid приложению , для того чтобы строить маршруты , логику вынес в ViewModel , когда ставлю точки остановки на определенные строки (укажу их комментарием в коде) , то все работает должным образом , но когда просто запускю приложение построение маршрута не отрабатывает

fun initRoutes(mapView: MapView, searchView: EditText) {

   

        mapview = mapView
        val points: MutableList<RequestPoint> = ArrayList()
        points.add(RequestPoint(ROUTE_START_LOCATION, RequestPointType.WAYPOINT, null))
        points.add(RequestPoint(ROUTE_END_LOCATION, RequestPointType.WAYPOINT, null))
        mapObjects = mapview.getMap().getMapObjects().addCollection();
        mtRouter = TransportFactory.getInstance().createPedestrianRouter()
        mtRouter!!.requestRoutes(points, TimeOptions(), this) //break point
        searchField = searchView
        var mapKit = MapKitFactory.getInstance()
        locationMapKit = mapKit.createUserLocationLayer(mapview.mapWindow)
        locationMapKit.isVisible = true
    
    }
    
    fun requestLocationPermissions() {
        if (ActivityCompat.checkSelfPermission(
                APP_ACTIVITY,
                Manifest.permission.ACCESS_FINE_LOCATION
            ) != PackageManager.PERMISSION_GRANTED
            && ActivityCompat.checkSelfPermission(
                APP_ACTIVITY,
                Manifest.permission.ACCESS_COARSE_LOCATION
            )
            != PackageManager.PERMISSION_GRANTED
        ) {
            ActivityCompat.requestPermissions(
                APP_ACTIVITY,
                arrayOf(
                    Manifest.permission.ACCESS_FINE_LOCATION,
                    Manifest.permission.ACCESS_COARSE_LOCATION
                ),
                REQUEST_CODE_PERMISSIONS
            )
            return
        }
    }
    
    
    override fun onMasstransitRoutes(routes: MutableList<Route>) {
        if (routes.size > 0) {
            for (section in routes[0].sections) {
                drawSection(  //break point
                    SubpolylineHelper.subpolyline(
                        routes[0].geometry, section.geometry
                    )
                )
            }
        }
    }
    
    override fun onMasstransitRoutesError(error: Error) {
        var errorMessage = "Unknown error"
        if (error is RemoteError) {
            errorMessage = "Remote error"
        } else if (error is NetworkError) {
            errorMessage = "Network error"
        }
    
        Toast.makeText(APP_ACTIVITY, errorMessage, Toast.LENGTH_SHORT).show()
    }
    
    private fun drawSection(
        geometry: Polyline
    ) {
        val polylineMapObject = mapObjects!!.addPolyline(geometry)
        polylineMapObject.setStrokeColor(R.color.main_blue) //break point
    }

Это код ViewModel

override fun onStart() {
        super.onStart()
        initialization()
    }

    private fun initialization() {
        mViewModel = ViewModelProvider(this)[MapFragmentViewModel::class.java]
        mapview = mBinding.mapview
        mapview!!.getMap().move(
            CameraPosition(Point(43.02706910205296, 131.88667688630807), 15.0f, 0.0f, 0.0f),
            Animation(Animation.Type.SMOOTH, 0F),
            null
        )
        MapKitFactory.getInstance().onStart();
        mapview!!.onStart();
        mViewModel.requestLocationPermissions()
        mViewModel.initRoutes(mapview!!,mBinding.searchViewMap)
        var mapKit = MapKitFactory.getInstance()

    }

Это код самого фрагмента


Ответы (1 шт):

Автор решения: Михаил Петров

Проблема в

mtRouter!!.requestRoutes(points, TimeOptions(), this) //break point

requestRoutes возвращает Session и данную сессию надо где-то сохранить, так как именно она хранит и делает запрос

Когда стоит брэкпоинт, то запрос успевает отработать и всё хорошо

Без брэкпоинта сессия удаляется быстрее чем успевает придти ответ и поэтому ничего не происходит

→ Ссылка