@@ -720,7 +720,7 @@ public void startFullScreen() {
720720 mIsFullScreen = true ;
721721
722722 //隐藏NavigationBar和StatusBar
723- hideSysBar ();
723+ hideSysBar (decorView );
724724
725725 //从当前FrameLayout中移除播放器视图
726726 this .removeView (mPlayerContainer );
@@ -730,11 +730,7 @@ public void startFullScreen() {
730730 setPlayerState (PLAYER_FULL_SCREEN );
731731 }
732732
733- private void hideSysBar () {
734- ViewGroup decorView = getDecorView ();
735- if (decorView == null ) {
736- return ;
737- }
733+ private void hideSysBar (ViewGroup decorView ) {
738734 int uiOptions = decorView .getSystemUiVisibility ();
739735 if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .JELLY_BEAN ) {
740736 uiOptions |= View .SYSTEM_UI_FLAG_HIDE_NAVIGATION ;
@@ -753,7 +749,7 @@ public void onWindowFocusChanged(boolean hasWindowFocus) {
753749 super .onWindowFocusChanged (hasWindowFocus );
754750 if (hasWindowFocus && mIsFullScreen ) {
755751 //重新获得焦点时保持全屏状态
756- hideSysBar ();
752+ hideSysBar (getDecorView () );
757753 }
758754 }
759755
@@ -772,7 +768,7 @@ public void stopFullScreen() {
772768 mIsFullScreen = false ;
773769
774770 //显示NavigationBar和StatusBar
775- showSysBar ();
771+ showSysBar (decorView );
776772
777773 //把播放器视图从DecorView中移除并添加到当前FrameLayout中即退出了全屏
778774 decorView .removeView (mPlayerContainer );
@@ -781,11 +777,7 @@ public void stopFullScreen() {
781777 setPlayerState (PLAYER_NORMAL );
782778 }
783779
784- private void showSysBar () {
785- ViewGroup decorView = getDecorView ();
786- if (decorView == null ) {
787- return ;
788- }
780+ private void showSysBar (ViewGroup decorView ) {
789781 int uiOptions = decorView .getSystemUiVisibility ();
790782 if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .JELLY_BEAN ) {
791783 uiOptions &= ~View .SYSTEM_UI_FLAG_HIDE_NAVIGATION ;
@@ -978,13 +970,13 @@ public void setTinyScreenSize(int[] tinyScreenSize) {
978970 */
979971 protected void setPlayState (int playState ) {
980972 mCurrentPlayState = playState ;
981- if (mVideoController != null )
973+ if (mVideoController != null ) {
982974 mVideoController .setPlayState (playState );
975+ }
983976 if (mOnStateChangeListeners != null ) {
984- for (int i = 0 , z = mOnStateChangeListeners .size (); i < z ; i ++) {
985- OnStateChangeListener listener = mOnStateChangeListeners .get (i );
986- if (listener != null ) {
987- listener .onPlayStateChanged (playState );
977+ for (OnStateChangeListener l : PlayerUtils .getSnapshot (mOnStateChangeListeners )) {
978+ if (l != null ) {
979+ l .onPlayStateChanged (playState );
988980 }
989981 }
990982 }
@@ -995,13 +987,13 @@ protected void setPlayState(int playState) {
995987 */
996988 protected void setPlayerState (int playerState ) {
997989 mCurrentPlayerState = playerState ;
998- if (mVideoController != null )
990+ if (mVideoController != null ) {
999991 mVideoController .setPlayerState (playerState );
992+ }
1000993 if (mOnStateChangeListeners != null ) {
1001- for (int i = 0 , z = mOnStateChangeListeners .size (); i < z ; i ++) {
1002- OnStateChangeListener listener = mOnStateChangeListeners .get (i );
1003- if (listener != null ) {
1004- listener .onPlayerStateChanged (playerState );
994+ for (OnStateChangeListener l : PlayerUtils .getSnapshot (mOnStateChangeListeners )) {
995+ if (l != null ) {
996+ l .onPlayerStateChanged (playerState );
1005997 }
1006998 }
1007999 }
0 commit comments