Hi
On Android side did you test it with some proven terminal like BlueTerm ot SenaBterm ?
Is your Android version known for good serial port profile handling ?
If you stay under 57600 bauds no reason loose bytes in such short messages if Android appication is good.
Serial.write() is meant for sending individual bytes, not strings of characters. With nothing to indicate what constitutes a packet within a stream of data, the receiver is just guessing.
In this case, the Android application guessed wrong.
Adding a sleep to the listener is a bandaid, and a poor one at that. Notice that when we communicate we use punctuation to tell when a sentence (a packet) ends and spaces to tell when a word ends (another kind of packet.