При применении DI в учебном проекте понадобилось передавать SharedPreferences, как зависимость. Мой вариант приложения создавал два разных файла SharedPreferences. Вот так я решил, когда изучали SharedPrefs. Они нужны были в разных сценариях использования приложения. Т.е. они имели разные имена и содержимое. При описании способа получения зависимости в одном модуле указал для Koin: factory<SharedPreferences> {
androidContext().getSharedPreferences(FIRSTACTIVITY_SHAREDPREFS, Context.MODE_PRIVATE)
} В другом модуле: factory<SharedPreferences> { androidContext().getSharedPreferences(SECONDACTIVITY_SHAREDPREFS, Context.MODE_PRIVATE) } (По версии Дзен Контекст - это aWV3latdD0w) В описании других зависимостей, которые требовали экземпляр SharedPrefences просто указывал get(). В итоге вышло несуразное: при попытке использования данных из SharedPrefences получал пустые данные. Оказалось, что в обе зависимости передавался один экземпляр SharedPrefences - тот, описание которого Koin