According to the developer pages for TextWatcher, if a change is made to the Editable
within TextWatcher
, it will trigger further calls to all the TextWatchers
linked to that Editable
. Now, clearly your code doesn't trigger this behaviour.
However, it is quite possible that if, for whatever reason, the system has a TextWatcher
on the Editable
, the situation you describe can occur. "Why", I hear you cry, "should this happen?"
First, the classic defence: there is no reason for it not to happen and, strictly, app code should be written to be resilient to it.
Second, I can't prove it, but I could well imagine that the code which handles layout of the displayed text within an EditText
uses a TextWatcher
to handle updating the display of the text on the screen. This code might insert control codes (which you aren't shown) into the Editable
to ensure good line breaks and so on. It may even go round a loop a few times to get it right, and you might only get your first call after it has done all of its ...
EDIT
As per the comment by @Learn OpenGL ES, calling of a TextWatcher would be normal for things like autocorrect.