问题
I have made a VideoPlayer using MediaPlayer which renders on surfaceView. For controls I am using "VideoControllerView". The problem is when I seek the progressbar, the UI becomes unresponsive and I get ANRs. As far as my knowledge is, nothing heavy is running on UI thread unless MediaPlayer updates/renders surfaceView on UI thread, in that case seeking might cause this issue. What factor here contributes to unresponsive UI on seeking? And how to check what is running on UI thread?
public void onCreate()
{
....
SurfaceHolder holder = surfView.getHolder();
holder.addCallback(this);
mMediaPlayer = new MediaPlayer();
....
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
mMediaPlayer.setDisplay(holder);
try {
mMediaPlayer.setDataSource(usedURL);
mMediaPlayer.prepareAsync();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
来源:https://stackoverflow.com/questions/28194187/mediaplaying-seeking-ui-lag