I think that depends on what you want to do exactly.
Is there anything else you would like to do during the loop?
When the loop runs your app cannot do anything else. It just loops round and round.
You might want to have some sort of button which can be pressed to stop listening.
You might want to have some graph which shows the noise or audio level.
In order to keep the UI running smoothly all the time, I would recommend to go for the handler-approach.
Your UI thread will then never be bothered by what's going on with the audio processing...
I'm not a so deep expert to be able to judge how much cheaper a while() loop is, but I think it's definitely cheaper - but you have above mentioned drawback.
From programming point-of-view, it's also more complicated to work with handlers as you do multi-threading. You do not have multiple threads with the while() approach.
However, I would recommend to do the audio processing in a thread separate from the UI thread.