-
-
Notifications
You must be signed in to change notification settings - Fork 252
2.1 Media Player Lifecycle
TL,DR: See ToroPlayer section and SimpleToroVideoViewHolder for more information.
ToroPlayer combines many basic Media Playback activities as well as the callback events from that. By that, it provides a good vision of what's going on while a Player is playing. Toro use that idea to create an abstract concept of Media Player lifecycle
, which is visible from ToroPlayer core methods:
/**
* Host Activity becomes active.
* Note that Activity behaviour is different from API 24+ to API 23-.
*/
void onActivityActive();
/**
* Host Activity becomes inactive.
* Note that Activity behaviour is different from API 24+ to API 23-.
*/
void onActivityInactive();
/* Playback lifecycle callback */
/**
* Preparing resources;
*/
void onVideoPreparing();
/**
* Replace {@link android.media.MediaPlayer.OnPreparedListener#onPrepared(android.media.MediaPlayer)}
*/
void onVideoPrepared();
/**
* Callback after this player starts playing
*/
void onPlaybackStarted();
/**
* Callback after this player pauses playing
*/
void onPlaybackPaused();
/**
* Callback after this player stops playing
*/
void onPlaybackCompleted();
boolean onPlaybackError(Exception error);
A long with this, Toro's PlayerViewHelper and MediaPlayerManager altogether will smartly access those method to provide best user experience. For example, user could setup a thumbnail in ToroPlayer#onVideoPrepared
(or even in ToroAdapter$$ViewHolder#onViewHolderBound())
, then animate that thumbnail to disappear right before playback starting in ToroPlayer#onPlaybackStarted()
and so on. See VideoViewHolder for more information.
A ViewHolder that extends ToroAdapter$ViewHolder and implements ToroPlayer will give developer an overall UI lifecycle (ViewHolder's cycle and Player's cycle) which is easy to control and easy to provide best UX.