代码之家  ›  专栏  ›  技术社区  ›  Alex Volovoy

视频视图播放的活动生命周期问题

  •  1
  • Alex Volovoy  · 技术社区  · 16 年前

    嗨,我遇到了另一个问题 VideoView . 然后播放视频,我用硬按钮让设备休眠, onPause() 被调用。但接下来是:

    03-17 11:26:33.779: WARN/ActivityManager(884): Activity pause timeout for HistoryRecord{4359f620 com.package/com.package.VideoViewActivity}
    

    然后我有了 onStart() / onResume() 视频又开始播放了。我试着移动代码 开始() / onStop() -似乎没什么区别。

    样本代码:

    public class VideoViewActivity extends Activity {
    
    
        private String path = "";
        private VideoView mVideoView;
        private static final String MEDIA_URL = "media_url";
    
        @Override
        public void onCreate(Bundle icicle) {
    
            super.onCreate(icicle);
            setContentView(R.layout.videoview);
            mVideoView = (VideoView)findViewById(R.id.surface_view);
            path = getIntent().getStringExtra(MEDIA_URL);
        }
    
        @Override
        public void onResume() {
    
            super.onResume();
            mVideoView.setVideoPath(path);
            mVideoView.setMediaController(new MediaController(this));
            mVideoView.requestFocus();
            mVideoView.start();
        }
    
        @Override
        public void onPause() {
    
            super.onPause();
            mVideoView.stopPlayback();
    
            mVideoView.setMediaController(null);
        }
    }
    

    为什么会这样?我该怎么阻止呢?

    这不是一个最好的体验,你把你的设备放在睡眠中,它开始播放视频。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Alex Volovoy    16 年前

    好的,看起来行为与活动生命周期相关,并且事实上VideoViewActivity在清单中设置为横向。添加

    android:configChanges="keyboardHidden|orientation" 
    

    为了那个活动 似乎解决了这个问题,然后在调用vs之前,只让设备休眠onpause()-所有生命周期方法都被执行了。 我会做更多的测试来确保它被修复…