Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit df4b3c6a authored by Andrew Lewis's avatar Andrew Lewis
Browse files

Clarify MediaPlayer non-thread-safety

The implementation of MediaPlayer has concurrency issues, so apps should
limit access to a single thread.

Also fix some miscellaneous minor javadoc issues.

Fixes: 118341983
Test: javadoc-only fix
Change-Id: I9a839d4d24591c95d07131e94abc6284241888d9
parent f9527fd0
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -89,6 +89,10 @@ import java.util.Vector;
 * of audio/video files and streams. An example on how to use the methods in
 * this class can be found in {@link android.widget.VideoView}.
 *
 * <p>MediaPlayer is not thread-safe. Creation of and all access to player instances
 * should be on the same thread. If registering <a href="#Callbacks">callbacks</a>,
 * the thread must have a Looper.
 *
 * <p>Topics covered here are:
 * <ol>
 * <li><a href="#StateDiagram">State Diagram</a>
@@ -554,13 +558,13 @@ import java.util.Vector;
 * possible runtime errors during playback or streaming. Registration for
 * these events is done by properly setting the appropriate listeners (via calls
 * to
 * {@link #setOnPreparedListener(OnPreparedListener)}setOnPreparedListener,
 * {@link #setOnVideoSizeChangedListener(OnVideoSizeChangedListener)}setOnVideoSizeChangedListener,
 * {@link #setOnSeekCompleteListener(OnSeekCompleteListener)}setOnSeekCompleteListener,
 * {@link #setOnCompletionListener(OnCompletionListener)}setOnCompletionListener,
 * {@link #setOnBufferingUpdateListener(OnBufferingUpdateListener)}setOnBufferingUpdateListener,
 * {@link #setOnInfoListener(OnInfoListener)}setOnInfoListener,
 * {@link #setOnErrorListener(OnErrorListener)}setOnErrorListener, etc).
 * {@link #setOnPreparedListener(OnPreparedListener) setOnPreparedListener},
 * {@link #setOnVideoSizeChangedListener(OnVideoSizeChangedListener) setOnVideoSizeChangedListener},
 * {@link #setOnSeekCompleteListener(OnSeekCompleteListener) setOnSeekCompleteListener},
 * {@link #setOnCompletionListener(OnCompletionListener) setOnCompletionListener},
 * {@link #setOnBufferingUpdateListener(OnBufferingUpdateListener) setOnBufferingUpdateListener},
 * {@link #setOnInfoListener(OnInfoListener) setOnInfoListener},
 * {@link #setOnErrorListener(OnErrorListener) setOnErrorListener}, etc).
 * In order to receive the respective callback
 * associated with these listeners, applications are required to create
 * MediaPlayer objects on a thread with its own Looper running (main UI