Since you dynamically register the receiver you can specify that another thread (other than the UI thread) handles the onReceive(). This is done through the Handler parameter of registerReceiver().
That said, if you did not do specify another Handler, it will get handled on UI thread always.