@@ -17,7 +17,9 @@ import com.mapbox.maps.plugin.animation.camera
1717import com.mapbox.maps.plugin.locationcomponent.location
1818import com.mapbox.navigation.base.options.NavigationOptions
1919import com.mapbox.navigation.core.MapboxNavigation
20- import com.mapbox.navigation.core.MapboxNavigationProvider
20+ import com.mapbox.navigation.core.lifecycle.MapboxNavigationApp
21+ import com.mapbox.navigation.core.lifecycle.MapboxNavigationObserver
22+ import com.mapbox.navigation.core.lifecycle.requireMapboxNavigation
2123import com.mapbox.navigation.core.replay.MapboxReplayer
2224import com.mapbox.navigation.core.replay.ReplayLocationEngine
2325import com.mapbox.navigation.core.replay.route.ReplayProgressObserver
@@ -56,15 +58,6 @@ class InactiveRouteStylingActivity : AppCompatActivity() {
5658 binding.mapView.camera
5759 }
5860
59- private val mapboxNavigation: MapboxNavigation by lazy {
60- MapboxNavigationProvider .create(
61- NavigationOptions .Builder (this )
62- .accessToken(Utils .getMapboxAccessToken(this ))
63- .locationEngine(ReplayLocationEngine (mapboxReplayer))
64- .build()
65- )
66- }
67-
6861 private val routeLineColorResources by lazy {
6962 RouteLineColorResources .Builder ()
7063 .inActiveRouteLegsColor(Color .YELLOW )
@@ -95,42 +88,63 @@ class InactiveRouteStylingActivity : AppCompatActivity() {
9588 MapboxRouteLineApi (options)
9689 }
9790
98- override fun onCreate (savedInstanceState : Bundle ? ) {
99- super .onCreate(savedInstanceState)
100- setContentView(binding.root)
101-
102- initNavigation()
103- initStyle()
104- initListeners()
105- }
106-
107- override fun onStop () {
108- super .onStop()
109- mapboxNavigation.unregisterRouteProgressObserver(replayProgressObserver)
110- mapboxNavigation.unregisterRouteProgressObserver(routeProgressObserver)
111- mapboxNavigation.unregisterLocationObserver(locationObserver)
112- mapboxNavigation.stopTripSession()
113- }
91+ private val mapboxNavigation by requireMapboxNavigation(
92+ onCreatedObserver = object : MapboxNavigationObserver {
93+ override fun onAttached (mapboxNavigation : MapboxNavigation ) {
94+ initListeners()
95+ }
11496
115- override fun onDestroy () {
116- super .onDestroy()
117- routeLineApi.cancel()
118- routeLineView.cancel()
119- mapboxReplayer.finish()
120- mapboxNavigation.onDestroy()
97+ override fun onDetached (mapboxNavigation : MapboxNavigation ) {
98+ mapboxNavigation.unregisterRouteProgressObserver(replayProgressObserver)
99+ mapboxNavigation.unregisterRouteProgressObserver(routeProgressObserver)
100+ mapboxNavigation.unregisterLocationObserver(locationObserver)
101+ mapboxNavigation.stopTripSession()
102+ }
103+ }
104+ ) {
105+ MapboxNavigationApp .setup(
106+ NavigationOptions .Builder (this )
107+ .accessToken(Utils .getMapboxAccessToken(this ))
108+ .locationEngine(ReplayLocationEngine (mapboxReplayer))
109+ .build()
110+ )
121111 }
122112
123- private fun initNavigation () {
113+ @SuppressLint(" MissingPermission" )
114+ private fun initListeners () {
124115 binding.mapView.location.apply {
125116 setLocationProvider(navigationLocationProvider)
126117 enabled = true
127118 }
128119 mapboxNavigation.setRoutes(listOf (getRoute()))
129120 mapboxNavigation.registerLocationObserver(locationObserver)
130121 mapboxNavigation.registerRouteProgressObserver(replayProgressObserver)
131- mapboxReplayer.pushRealLocation(this , 0.0 )
122+ mapboxReplayer.pushRealLocation(
123+ this @InactiveRouteStylingActivity,
124+ 0.0
125+ )
132126 mapboxReplayer.playbackSpeed(1.5 )
133127 mapboxReplayer.play()
128+ binding.startNavigation.setOnClickListener {
129+ mapboxNavigation.registerRouteProgressObserver(routeProgressObserver)
130+ mapboxNavigation.startTripSession()
131+ binding.startNavigation.visibility = View .GONE
132+ startSimulation(mapboxNavigation.getRoutes()[0 ])
133+ }
134+ }
135+
136+ override fun onCreate (savedInstanceState : Bundle ? ) {
137+ super .onCreate(savedInstanceState)
138+ setContentView(binding.root)
139+
140+ initStyle()
141+ }
142+
143+ override fun onDestroy () {
144+ super .onDestroy()
145+ routeLineApi.cancel()
146+ routeLineView.cancel()
147+ mapboxReplayer.finish()
134148 }
135149
136150 private fun initStyle () {
@@ -177,16 +191,6 @@ class InactiveRouteStylingActivity : AppCompatActivity() {
177191 )
178192 }
179193
180- @SuppressLint(" MissingPermission" )
181- private fun initListeners () {
182- binding.startNavigation.setOnClickListener {
183- mapboxNavigation.registerRouteProgressObserver(routeProgressObserver)
184- mapboxNavigation.startTripSession()
185- binding.startNavigation.visibility = View .GONE
186- startSimulation(mapboxNavigation.getRoutes()[0 ])
187- }
188- }
189-
190194 private val routeProgressObserver = RouteProgressObserver { routeProgress ->
191195
192196 // This is the most important part of this example. The route progress will be used to
0 commit comments