我想知道是否有可能在async def producer():
return await asyncio.get_event_loop().run_in_executor(None, lambda: input("Enter something: "))
内启动Coroutine
,我的意思是,想象一下,您按下ViewHolder
内的一个项目,您需要调用OnBindViewHolder
得到回应...我不知道是否可以在其中使用API
!
非常感谢
PS。或类似的东西
Coroutines
答案 0 :(得分:0)
请勿执行此操作,这是完全错误的。在为其专门设计的组件内执行后台工作,例如ViewModel,它具有可在配置更改后保留的生命周期,并且具有与ViewModel的生命周期相关的CoroutineScope。
您的ViewHolder应该为承载RecyclerView的Fragment / Activity提供一种方法,以注册一个onClickListener,并在单击时在ViewModel上调用一个方法。
您可以在列表项上使用lambda作为构造函数参数,或者在列表项上具有setOnClickListener()方法以及用于存储它的属性。
答案 1 :(得分:-1)
我可以使用此插件对其进行修复...它的工作原理就像一个魅力
https://github.com/satoshun/CoroutineAutoDispose
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
holder.itemView.autoDisposeScope.launch {
...
}
}