Let's say I have an Android app which connects to a BLE device. The app uses a foreground service in order to constantly receive the BLE notifications on characteristic change. Will the phone receive and process the notification when it's in sleep mode (Doze)? Or should I keep CPU WAKE LOCK all the time?
You're fine if you have a Foreground Service. The arrival of a Bluetooth packet will wake up the CPU.