Войти Регистрация
Код-ревью

10. Отслеживание курьера на карте

Средняя

Kotlin · 31 строк

Экран показывает курьера на карте, время до приезда и адрес доставки. CourierTracker — синглтон (object), subscribe возвращает Subscription с методом cancel(). api.loadOrder — suspend-функция, при отсутствии сети бросает IOException.

Отметьте строки с ошибками.

В работе: Экран заказа в доставке: его поворачивают, сворачивают и открывают из push.

Как проверяем Нажмите на строку с ошибкой и коротко напишите, что не так. Баг засчитан, если отмечена хотя бы одна его строка. Зачёт — найдено не меньше 60 % багов с учётом серьёзности (критичный весит 3, обычный 2, мелкий 1), а лишних отметок не больше, чем багов в коде. Пустые строки, скобки и комментарии лишними не считаем. Ответ один на подход: после него показываем разбор.
Androidжизненный циклкорутиныутечки

Источник: Яндекс: мобильная разработка, секция «исправить ошибки в готовом коде». Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.
  1. class CourierTrackingActivity : AppCompatActivity() {
  2. private lateinit var map: MapView
  3. private lateinit var etaText: TextView
  4. private val api = DeliveryApi.create()
  5. override fun onCreate(savedInstanceState: Bundle?) {
  6. super.onCreate(savedInstanceState)
  7. setContentView(R.layout.activity_tracking)
  8. map = findViewById(R.id.map)
  9. val orderId = intent.getStringExtra("order_id")!!
  10. CourierTracker.subscribe(orderId) { position ->
  11. map.moveMarker(position.lat, position.lon)
  12. val minutes = position.etaSec / 60
  13. etaText.text = "Курьер будет через $minutes мин"
  14. }
  15. GlobalScope.launch {
  16. val order = api.loadOrder(orderId)
  17. findViewById<TextView>(R.id.address).text = order.address
  18. }
  19. }
  20. override fun onResume() {
  21. super.onResume()
  22. map.onResume()
  23. }
  24. override fun onPause() {
  25. map.onPause()
  26. super.onPause()
  27. }
  28. }