I don't think Android architecture have a runloop implementation in the main thread, In Android the main thread have a event handler that handles touch events, broadcast listeners, activity life cycle callbacks ... but they don't handle the stream events from sockets(event like data received from the socket).
we need to handle these events in the separate thread and if we need to do some UI changes from this thread we need to use Loopers to pass the message to the main thread handler, since we know that UI changes cant be done in other threads.
But in IOS NSRunLoop helps us to handle these events in the main loop instead of getting our hands in to multithreading issue. NSRunloop does not create a separate thread but instead uses the same threads to handle the events.
We should be careful about the event being added using NSRunloop, if it is going to take few seconds, it is better to use NSThread instead of NSRunLoop which will block the main thread from handling touch events.
I attach the links that will helped me to understand these concepts, about NSRunloop and about handlers and loopers