我正在为多显示器设备构建应用程序。该应用程序应可供 2 个不同的用户同时且独立地使用。虽然共享相同的数据,但它们都可以有不同的数据,SharedPreferences
并且应用程序应该适应每个用户的需求。
这意味着该应用程序将MainActivity
同时运行 2 个不同的实例,并且根据它们所在的显示,我需要加载 2 个不同的SharedPreferences
文件。我Koin
用于依赖注入,因为从内部Koin Module
我无法检测到“需要此依赖项”的显示是什么,所以我有点卡住了。
我考虑过提供范围依赖,但我的Preferences
类在不同的ViewModels
(连接到连接到这些MainActivity
es 之一的不同片段)、存储库类或Service
s 中大量使用,并且我不能scoped
在非范围的依赖项中使用依赖项或我得到一个RuntimeException
因为Koin
找不到创建我的类所需的依赖项。
我像这样提供我的Preferences
文件:
class Preferences(private val sharedPreferences: SharedPreferences) {...}
Koin 模块:
scope<MainActivity> {
// this gets injected into MainActivity and will hold whether this instance
// is from the main or from the secondary display.
scoped { CalendarDisplayManager() }
scoped<SharedPreferences> {
val isOnCoDriver = get<CalendarDisplayManager>().isMainDisplay
val fileName = if (isOnCoDriver) "shared_preferences_main_display"
else "shared_preferences_secondary_display"
androidContext().getSharedPreferences(fileName, Context.MODE_PRIVATE)
}
}
该解决方案目前不完整且无法正常工作。我怎样才能克服这个问题并区分何时Preferences
需要由MainActivity
主显示器或辅助显示器上的课程使用我的课程?