为什么好玩的线程Kotlin内不执行?

时间:2018-11-25 20:20:58

标签: multithreading kotlin

  • 我尝试在Thread中执行函数,但该函数未执行:

    Thread {
        run {
            Thread.sleep(1000)
            createView(view, inflater)
        }
    }.start()
    
  • 所以我尝试使用另一个代码,例如:

    thread(start = true) {
        Thread.sleep(1000)
        createView(view, inflater)
    }
    

    再次未执行createView

  • 最后我尝试:

    Thread {
        Thread.sleep(5000)
        fun run() {
            Runnable {
                createView(view, inflater)
            }
        }
    }.start()
    

    我得到一个错误:

      

    “只有创建视图层次结构的原始线程才能触摸其视图。”

1 个答案:

答案 0 :(得分:0)

只有主线程可以更改视图。因此,您需要执行以下操作:

Thread {
    Thread.sleep(5000)

    this@SomeActivity.runOnUiThread(Runnable {
        createView(view, inflater)
    })
}.start()