runOnUiThread is not calling

The above answer is correct and should be accepted.
In case your are coming from Java, here is an example of the equivalent Java of your code:

    runOnUiThread(new Runnable() { // This runnable is created
        @Override                  // from lambda by SAM convention
        public void run() {

            new Runnable() {       // This Runnable is instantiated
                @Override          // inside the lambda but never runs.
                public void run() {
                    Log.i(TAG, "runOnUiThread");
                }
            };
        }
    });

I hope you can see how the inner code doesn't get executed.


What you are doing is passing in a lambda to the runOnUiThread function. It will run that lambda, and create an object that inherits from Runnable, and then do nothing with it. Maybe you can see that a little bit better if you format it like this (added some extra log statements and explanation):

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

The created object is not assigned to a variable, and is never used. If you want to pass in a Runnable instance to the runOnUiThread method, you can do that by just putting it inside the parentheses of the runOnUiThread call:

runOnUiThread(
        object : Runnable {
            override fun run() {
                Log.i(TAG, "runOnUiThread")
            }
        }
)

The simplest way to use runOnUiThread though is to pass in a lambda to it using SAM conversion, and writing the code you want to execute directly inside that.

runOnUiThread { 
    Log.i(TAG, "runOnUiThread") 
}

Here's the official documentation covering SAM conversions, which happens to use Runnable in its examples.