あなたがやっていることは、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(
object : Runnable {
override fun run() {
Log.i(TAG, "runOnUiThread")
}
}
)
runOnUiThreadかかわらを使用する最も簡単な方法は、ラムダに渡すことです:あなたはrunOnUiThread
方法にRunnable
インスタンスに渡したい場合は、あなただけのrunOnUiThread
コールのかっこ内にそれを置くことによってそれを行うことができますSAM変換を使用して、その中で直接実行したいコードを記述します。
runOnUiThread {
Log.i(TAG, "runOnUiThread")
}
は、ここでその例でRunnable
を使用するように起こるofficial documentation covering SAM conversions、です。
恐ろしい解明。ありがとう@ zamb13 –