Kotlin kovenant succesUi在错误的线程?
我和Kovenant有一个奇怪的问题。 要么我不明白的东西有一些错误。 以下代码是Android的一个简单task { } successUi { }
。 但succesUi
生成android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
,当cheking线程名称是: kovenant-callback-2
,而不是主线程iv
是ImageView
。
val promesa1 = task { val nazwa = Thread.currentThread().name print(nazwa) } successUi { val nazwa = Thread.currentThread().name print(nazwa) try { iv!!.setImageBitmap(null) } catch (ex : Exception) { print("Mamy:"+ex.toString()) } }
你必须在你的MainActivity上调用startKovenant()
(和stopKovenant()
)。 这将设置Kovenant与Android一起使用,保持线程活动并将适当的Dispatcher附加到UI回调。
所以像这样:
public class MainActivity : ... { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(...) // Configure Kovenant with standard dispatchers startKovenant() } ... override fun onDestroy() { stopKovenant() super.onDestroy() } }
有关此主题的更多信息,请参阅Android配置文档