I'd use a combination of onSuspended condition and Unix time (https://en.wikipedia.org/wiki/Unix_time).
You'd simply record the Unix timestamp when the user closes the game (onSuspended), and then subtract this number from the Unix stamp when the game is opened again - if the number is greater than 28,800,000 (8 hours in milliseconds), then you know that 8 hours or more have passed.
The one thing I'm not sure on is if onSuspended is called if the app is closed rather than suspended