Refactors lifecycle event observers
When the app is "paused", aka not actively focused, but still visible
(such as when opening Android TV OS menu), playback will pause.
When the app is "stopped", aka not visible (such as pressing Home
button), playback will stop, report playback progress, and return to the
previous screen.
I think this will fix#181, but I don't have a controller to test with
Separates the loading logic into two groups:
1. Continue Watching & Next Up
2. Latest media
The home page displays once the first group is ready and shows
placeholders while the latest media is fetched. This also speeds up
refreshes when returning home after watching an episode.
Also ensure grouped Movie/TV libraries are displayed as Movie/TV
libraries instead of falling back to a generic grid display.
Fixes#189
Previously all of the rows on the recommended tab for Movies & TV Shows
were loaded sequentially before any results were shown. This is not a
great experience because some of the queries (eg top rated unwatched)
can take a while sometimes.
This PR starts displaying content once the first 1 or 2 rows is loaded
and then shows placeholders while the rest are querying.
Finally the row queries are now mostly independent so if one errors out,
the rest of the rows will still be displayed.
Closes#180
Fixes#184
Data was being fetched, but the UI wasn't being properly notified to
display the data.
This PR also adjusts so that "focused episode header" still takes up the
space even if the focused episode hasn't fully loaded yet. This prevents
the UI from jumping up and down.
Also #42 is _not_ fixed by this PR because it is a different issue.
## Changes:
- Hopefully finally fixes next up card image issues
- Remove the slider wraparound behavior in settings
- Removes the shadows/blurry effect on movie & person titles
- Adds the official rating to the home page
- Consistently order the official rating on home, movie, & series pages
- Add 1.75x speed for playback
- Don't time out the audio track selection/playback speed/video scale
dialogs
## Issues
Closes#166Closes#168Closes#169
Related to #162
Follow up to #167