Yes, probably thats adding issues on top.
But I'm afraid this is a more deep issue in Android (as well as in iOS).
There are many references in the web where it leads to the same conclusions, that BLE is not very stable implemented.
https://stackoverflow.com/questions/23110295/difference-between-close-and-disconnect
https://devzone.nordicsemi.com/f/nordic-q-a/38422/android-disconnect-and-close-do-not-disconnect
https://medium.com/@martijn.van.welie/making-android-ble-work-part-2-47a3cdaade07
https://android.jlelse.eu/lessons-for-first-time-android-bluetooth-le-developers-i-learned-the-hard-way-fee07646624
https://punchthrough.com/android-ble-development-tips/
You have to play around with various methods, timing, callbacks, etc., to find a workable solution.
I had hope that somebody has experienced the same issues, and knows probably a good and clean way to solve this.
In above article from Martijn van Welie the Blessed library is recommended, as more iOS compatible and "friendly",
so I have hope that such improved library may also exist for Delphi.
If not, maybe some fixes for the BLE System libraries might exist, but I always try to avoid this, especially if they cannot be accessed easily.
I think that the main issue that Delphi is used to make fast prototypes, but not stable applications for BLE in most cases,
where these issues might be acceptable.