당신이하고있는 일은 람다를 runOnUiThread
함수에 전달하는 것입니다. 해당 람다를 실행하고 Runnable
에서 상속받은 object
을 만든 다음 아무 것도하지 않습니다. 어쩌면 당신은 당신이이 같은 포맷하면 더 나은 조금 (일부 추가 로그 제표 및 설명 추가) 것을 볼 수 있습니다 :
runOnUiThread({
Log.i(TAG, "This is run")
object : Runnable { // This whole expression
override fun run() { // returns an object which
Log.i(TAG, "runOnUiThread") // is a Runnable, but does
} // not at any point invoke
} // its "run" method
Log.i(TAG, "And so is this")
})
생성 된 object
는 변수에 할당되지 않으며, 사용되지 않습니다. 하지만 runOnUiThread를 사용하는
runOnUiThread(
object : Runnable {
override fun run() {
Log.i(TAG, "runOnUiThread")
}
}
)
가장 간단한 방법은 람다에 전달하는 것입니다 : 당신이 runOnUiThread
방법에 Runnable
인스턴스에서 전달하려는 경우, 당신은 단지 runOnUiThread
호출의 괄호 안에 그것을 넣어하는 것을 할 수있다 SAM 변환을 사용하고 직접 실행하려는 코드를 작성합니다.
runOnUiThread {
Log.i(TAG, "runOnUiThread")
}
는 다음의 예에서 Runnable
을 사용 일어나는 official documentation covering SAM conversions,입니다.
굉장한 설명. 고마워요 @ zamb13 –