Scroll to bottom on load does not work accurately.
Messages lost. Gaps between messages.
Tested on Android 7/6.
Performance degrades on mobiles with lower processing power.
I think you should hardcode a list of items for testing (or load it from a file) instead of generating it - no idea how slow/fast that is right now.
Also there are multiple things going on at the same time - I would test it one after another. Start with:
For that you don’t need any buttons, any keyboard things, nothing.
This also needs no keyboard or randomly generated messages. I would guess your timeout stuff isn’t at the right time.
That is to be expected with a list of 5000 entries. What about memory usage?