object в Kotlin - это стандартный способ объявления синглтона: единственного, глобально доступного экземпляра, который создаётся один раз на JVM.На уровне языка это действительно гарантируется. Но в реальных проектах эта гарантия может быть нарушена - без ошибок компиляции и каких-либо заметных предупреждений.
Одна из распространённых причин - сериализация. Некоторые библиотеки во время десериализации создают новый экземпляр, нарушая равенство по ссылке и ломая общий разделяемый стейт.
В этой статье разбирается, когда Kotlin-синглтоны перестают быть настоящими синглтонами - и как этого избежать на практике.
https://proandroiddev.com/when-kotlin-object-stops-being-a-singleton-604a3354e4ec
✍️ @kotlin_lib
