For the whole year of using the ZF6, I had no problem with BT connectivity except for the Philips shaver occasionally, but according to frequent negative user reviews for its app, only Philips can be blamed (the last time two weeks ago I had to turn BT off / on manually and then the shaver connected in its app again). See a list of my devices in use, btw some devices aren't visible in the list because they don't need to be paired, such as all my Chromebooks, where BT is used for automatic unlocking via Smart Lock.
I have BT permanently turned on, but I've been used to restart BT on all my devices for years when device automatically switches Do Not Disturb mode twice a day (in the morning and at midnight) as a prevention of any potential problems. Why? Because of BT problematic nature on Android in general. See my Tasker script.
Tasker script export as Description:
Profile: Bluetooth Restart (33)
Event: Variable Set [ Variable:%INTERRUPT Value:* User Variables Only:Off ]
State: BT Status [ Status:On ]
Enter: Bluetooth Restart (7)
A1: Shut Up
A2: Music Stop [ Clear Dir:Off ]
A3: Get connected devices [ Configuration:A2DP or headset connected devices Timeout (Seconds):60 ]
A4: Bluetooth [ Set:Off ]
A5: Flash [ Text:%btdevname(1) Long:On ] If [ %btdevname(1) Set ]
A6: Wait [ MS:0 Seconds:4 Minutes:0 Hours:0 Days:0 ]
A7: Bluetooth [ Set:On ]
A8: Connection [ Configuration:Connect %btdevname(1) Timeout (Seconds):60 ] If [ %btdevname(1) Set ]
Tasker script export as XML:
1487759370981
1593074218893
33
7
Bluetooth Restart
3050
0
%INTERRUPT
2
1487758677626
1593074218893
7
Bluetooth Restart
6
697
449
60335006
8
java.lang.Integer
2
java.lang.Integer
A2DP or headset connected devices
java.lang.String
<StringArray sr=""><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0>%btdevname()
Device name list
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1>%btdevaddr()
Device address list
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1></StringArray>
[Ljava.lang.String;
true
java.lang.Boolean
com.balda.bluetask
com.balda.bluetask.ui.FireGetDevices
294
548
%btdevname(1)
%btdevname(1)
12
30
294
704475526
%btdevname(1)
java.lang.String
0
java.lang.Integer
8
java.lang.Integer
3
java.lang.Integer
Connect %btdevname(1)
java.lang.String
com.balda.bluetask.extra.NAME
java.lang.String
true
java.lang.Boolean
com.balda.bluetask
com.balda.bluetask.ui.FireForceConnect
%btdevname(1)
12
mw_device_bluetooth_connected