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?

foreground services are not affected when doze kicks in
– Tim CastelijnsNov 9 at 13:17

Yes, as far as I know, foreground services are not affected by Doze, but it doesn't mean that the CPU will still be running after the user turns off the screen.
– Derek KNov 9 at 14:36

For example, on developer.android.com I read "One remaining use-case for partial wake locks is to ensure that a music app continues to play when the screen is off". And also "If you must use partial wake locks, follow these recommendations: Make sure some portion of your app remains in the foreground. For example, if you need to run a service, start a foreground service instead. This visually indicates to the user that your app is still running"
– Derek KNov 9 at 14:52