Является ли хорошей практикой объявлять область сопрограммы внутри класса App
вместо использования Globascope?
class App : Application() {
val applicationJob = Job()
companion object {
lateinit var instance: App
private set
lateinit var appDefaultScope: CoroutineScope
}
override fun onCreate() {
super.onCreate()
instance = this@App
appDefaultScope = CoroutineScope(Dispatchers.Default + applicationJob)
}
}
Здесь я определил переменную appDefaultScope
и инициализировал ее в * 1006 приложения.*
Так что в любом месте моего кода я всегда мог сделать:
App.appDefaultScope.launch {
// some operations
}
Основное отличие от GlobalScope, которое я вижу, состоит в том, что здесь я всегда могу отменить работу и закрыть все потенциально застрявшиесопрограммы.
Есть ли лучшие альтернативы этому?
Причина в том, что у меня есть некоторые object
функции, которые используют сопрограммы и не вызываются из операции (тогда я не могу предоставить им область, определенную внутри действия), но мне нужна область для их операций.Примером такой объектной функции является журнал, который записывает данные в локальную базу данных, которую можно вызывать практически везде в приложении.