Kotlin kovenant succesUi错误的线程?

时间:2016-01-08 08:28:28

标签: kotlin

我和Kovenant有一个奇怪的问题。要么我不明白的东西o有一些bug。以下代码是Android的简单task { } successUi { }。然而,succesUi生成android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.,在检查主题名称时是:kovenant-callback-2,而不是主帖ivImageView

    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())
        }
    }

1 个答案:

答案 0 :(得分:2)

您必须在MainActivity上拨打startKovenant()(和stopKovenant())。这将通过保持线程活动并将适当的Dispatchers附加到UI回调来设置Kovenant与Android一起使用。

类似于:

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 configuration documentation