lah23 Is it actually supposed to preserve time while phone is off?
That is the job of the RTC. Every phone I've ever seen has had an RTC, so it would really surprise me if P9 didn't. Android checks the RTC for current time during bootup, and sets the RTC whenever it refreshes the time over NTP. If it isn't getting a correct time during bootup, then there is some kind of a problem, which could boil down to the following, in no order of priority;
1) Hardware failure,
2) Hardware non-present,
3) Driver failure,
4) Configuration failure,
5) Selinux misconfiguration.
The way I'd go about narrowing it down would be this;
a) Check if other GOS users with the same hardware have the same issue.
- If they DO NOT have the same issue, it points to (1) and rules out (2) through (5).
- If they DO have the same issue, it rules out (1) and suggests (2) through (5) --> continue.
b) Check if FACTORY OS has the same issue.
- If it DOES NOT have the same issue, it rules out (2), and suggests (3) through (5).
- If it DOES have the same issue, it hints towards (2), but doesn't rule out (3) through (5).
From your point of view, (3) through (5) is all the same. It means that there is a software issue that can be corrected.
I'm not fully certain about how the hardware is designed on these devices, but on qualcomm hardware, the RTC is integrated with the PMIC (power management / battery controller). Its the most rational place to put it since it requires continual power (a very tiny amount, like a microamp) to run.