Ответ
Однажды я разрабатывал фичу с push-уведомлениями, но забыл обработать случай, когда приложение убито системой. В результате при тапе на уведомление приложение крашилось.
Ошибка была в том, что я не учел:
// Плохо:
intent?.extras?.getString("key") // NPE если intent == null
// Правильно:
intent?.extras?.getString("key") ?: run {
Timber.e("Intent or extras is null")
return
}
Из этого я вынес урок: всегда тестировать крайние случаи и использовать безопасные вызовы с обработкой null. Теперь перед релизом обязательно проверяю:
- Холодный старт
- Убитое системой состояние
- Разные версии Android