- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Kotlin,现在 android studio 建议我
添加
This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
add @DelicateCoroutinesApi annotation to function
它添加了
@DelicateCoroutinesApi
像这样的东西
@DelicateCoroutinesApi
fun getAmount(activity: LoginActivity, user:FirebaseUser){
mFireStore.collection(Constants.AMOUNT).document(user.uid).get().
addOnSuccessListener { d ->
activity.amountGetSuccess( d, user)
}
}
当我使用协程时,它建议我让我们看看另一个例子
@DelicateCoroutinesApi
private fun playsound() {
GlobalScope.launch {
withTimeout(10L) {
// play sound
val mPlayerPress = MediaPlayer.create(this, R.raw.button_press)
mPlayerPress.start()
}
}
我的问题是为什么这个@DelicateCoroutinesApi
最佳答案
@DelicateCoroutinesApi
某些 API 使用需要注释,如果您查看 documentation它指出
Marks declarations in the coroutines that are delicate —they have limited use-case and shall be used with care in generalcode. Any use of a delicate declaration has to be carefully reviewedto make sure it is properly used and does not create problems likememory and resource leaks. Carefully read documentation of anydeclaration marked as
DelicateCoroutinesApi
.
GlobalScope
需要这个注解,因为
GlobalScope
属于“
have limited use-case and shall be used with care”类别'。
CoroutineScope
中启动它限定了协程的生命周期。例如,如果您使用
viewModelScope
启动协程, 那么这个协程会在
ViewModel
被取消被摧毁。
GlobalScope
另一方面,创建全局协同程序,它们的生命周期是程序员的责任,如果由于某种原因(网络延迟等)这些全局协同程序无法完成,那么它们会继续运行并消耗系统资源,这种行为
along with other issues , 可能导致内存泄漏,因此
DelicateCoroutinesApi
.
关于android - 为什么使用 GlobalScope 需要 @DelicateCoroutinesApi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68599452/
我正在尝试使用 0.30.0 中的最新协程,但无法弄清楚如何使用新的范围。在最初的协程中,我可以使用 UI 或 CommonPool 设置上下文,一切正常。 现在我在从房间数据库读取数据时尝试在 Vi
GlobalScope 和 MainScope 有什么区别? //Accessing data from Room GlobalScope.launch { v.tvStore
我有这个代码的问题。 https://kotlinlang.org/docs/reference/coroutines/basics.html fun main() { GlobalScope
如果处理时间超过 250 毫秒,我想显示进度对话框。 我正在尝试使用协程来完成。我的问题是我是否删除“delay(250)”行,它总是先运行 dismissProgressDialog() 然后运行
我读到强烈建议不要使用 Globalscope,here . 我有一个简单的用例。对于我收到的每条 kafka 消息(比如说一个 Id 列表),我必须拆分它并同时为每个 Id 调用一个休息服务,然后等
我正在使用 Kotlin,现在 android studio 建议我 添加 This is a delicate API and its use requires care. Make sure yo
Kotlin 的 runBlocking Coroutine 应该阻塞当前线程,直到块内的 Coroutine 完成执行,但是当块内的 Coroutine 是 GlobalScope.launch 时
我习惯使用 AsyncTask并且由于它的简单性而很好地理解它。但是Coroutines让我很困惑。您能否以简单的方式向我解释以下各项的区别和目的是什么? GlobalScope.launch(Dis
假设 CoroutineScope 是由一些生命周期感知组件实现的,比如 Presenter。什么时候使用 GlobalScope.produce 与 CoroutineScope.produce 比
这两种方法有什么区别吗? runBlocking { launch(coroutineDispatcher) { // job } } GlobalScope.launch(c
我有这个功能 override fun trackEvent(trackingData: TrackingData) { trackingData.eventsList()
我正在jetpack compose中编写一些寻呼机代码,遇到了需要通过单击按钮来更改页码的情况。这是我点击按钮的事件: onClick = {pagerState.scrollToPage(page
我在 github 中有多模块 kotlin gradle 项目 here . 我的一个子项目introducing-coroutines与构建文件build.gradle.kts文件是here bu
我尝试运行 https://github.com/Kotlin/kotlinx.coroutines/blob/master/docs/basics.md#your-first-coroutine最新
我是 Kotlin 的新手 - 事实上我从来没有计划使用它,但我正在尝试使用 CameraKit库,它使用似乎是为其 API 接口(interface)生成的 Kotlin 层。我一直遇到相机未正确断
在 Kotlin 中有多种启动协程的方法。我发现了几个示例,其中 GlobalScope 和 CoroutineScope 被使用。但是后者是在启动协程时直接创建的: 使用 GlobalScope :
我读到在 GlobalScope 上运行例程是不好的做法。 现在正在做的是: class SplashScreen : AppCompatActivity() { override f
globalScope 、 coroutineScope 和 viewModelScope 有什么区别,何时在 Kotlin 编程中使用它们,而 viewModelScope 仍在开发中? 我已经通过
从 Activities、Fragments 或 Android 架构组件 ViewModels 启动协程时,使用绑定(bind)到该 View 组件生命周期的协程范围是完全有意义的,以避免泄漏和释放
我正在尝试将一些库预加载到全局范围内(例如 chai.js)。这改变了一些对象的原型(prototype),我意识到这适用于 ENGINE_SCOPE 但不适用于 GLOBAL_SCOPE。 最小的例
我是一名优秀的程序员,十分优秀!