Kotlin:在App类中定义协程范围

时间:2019-01-30 16:19:56

标签: android kotlin kotlinx.coroutines

function last_column() { var sheet = SpreadsheetApp.getActiveSheet(); var values = []; values = sheet.getRange("A1:1").getValues(); // getValues() returns a multi-dimensional array, so syntax // for the entire row is values[0] for (var i = 0; i < values[0].length; i++) { if (values[0][i] === "") { Logger.log("found empty column: %s",i+1); break; } } return i+1; } 类中声明一个协程范围而不是使用Globascope是一种好习惯吗?

App

在这里,我定义了一个变量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中对其进行了初始化

所以在我的代码中的任何地方我都可以做:

onCreate

我看到的与GlobalScope的主要区别在于,在这里我可以随时取消作业并关闭所有可能卡住的协程。

有更好的替代方法吗?

原因是我有一些App.appDefaultScope.launch { // some operations } 函数,它们使用协程并且未从活动中调用(因此我无法为它们提供活动内部定义的范围),但需要它们的操作范围。 这种对象函数的一个示例是在本地数据库中写的日志,该日志几乎可以在App中的任何地方调用。

0 个答案:

没有答案