Ada*_*kad 23 android kotlin android-studio kotlin-coroutines
我正在使用 Kotlin,现在 android studio 建议我添加
这是一个微妙的 API,使用时需要小心。确保您完全阅读并理解标记为敏感 API 的声明文档。
当我点击
add @DelicateCoroutinesApi annotation to function
Run Code Online (Sandbox Code Playgroud)
它添加了 @DelicateCoroutinesApi
这样的东西
@DelicateCoroutinesApi
fun getAmount(activity: LoginActivity, user:FirebaseUser){
mFireStore.collection(Constants.AMOUNT).document(user.uid).get().
addOnSuccessListener { d ->
activity.amountGetSuccess( d, user)
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用协程时,它建议我看另一个例子
@DelicateCoroutinesApi
private fun playsound() {
GlobalScope.launch {
withTimeout(10L) {
// play sound
val mPlayerPress = MediaPlayer.create(this, R.raw.button_press)
mPlayerPress.start()
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么这个@DelicateCoroutinesApi @DelicateCoroutinesApi 的工作是什么
mig*_*WOZ 25
@DelicateCoroutinesApi
某些 API 使用需要注释,如果您查看文档,它会说明
\n\n标记协程中微妙的声明\xe2\x80\x94\n它们的用例有限,在一般代码中应小心使用。任何对微妙声明的使用都必须仔细审查\n以确保它被正确使用并且不会产生\n内存和资源泄漏等问题。仔细阅读标记为 的任何\n声明的文档
\nDelicateCoroutinesApi
。
使用GlobalScope
需要此注释,因为GlobalScope
属于“用例有限,应谨慎使用”类别。
这是因为 kotlin 协程遵循结构化并发原则,这意味着新的协程只能在特定的环境中启动CoroutineScope
,从而限制了协程的生命周期。例如,如果您使用 启动一个协程viewModelScope
,那么该协程将在被销毁后立即取消ViewModel
。
但GlobalScope
另一方面创建全局协程,它们的生命周期是程序员的责任,如果由于某种原因(网络延迟等)这些全局协程无法完成,那么它们会继续运行并消耗系统资源,这种行为以及其他问题,可能会导致内存泄漏,因此DelicateCoroutinesApi
.
归档时间: |
|
查看次数: |
11716 次 |
最近记录: |