Jon*_*nas 5 android android-videoview exoplayer
我想在我的 RecyclerView 项目中播放视频,有点像 Instagram。一次仅展开一个项目,因此不必同时播放视频。
我目前正在使用 ExoPlayer。我的 RecyclerView 项目中有一个 PlayerView。
问题是,对于播放器,我的性能很差,在滚动和扩展时非常糟糕。仅在项目中包含播放器而不加载和播放视频,Performany 已经很糟糕,但加载它会变得更糟。
我也尝试过VideoView,但似乎没有太大区别。
为了获得更好的性能,我已经这样做了:
recyclerView.setHasFixedSize(true);
recyclerView.setItemViewCacheSize(10);
recyclerView.setDrawingCacheEnabled(true);
recyclerView.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
adapter.hasStableIds();
Run Code Online (Sandbox Code Playgroud)
这有一点帮助,但它并不能解决性能问题。
知道问题是什么吗?我欣赏并思考。
编辑:
这是我设置 ExoPlayer 的方法:
public void showTutuorItems(Context context, Boolean show, String resource) {
if (show) {
seperator.setVisibility(View.VISIBLE);
lytTutor.setVisibility(View.VISIBLE);
playerView = itemView.findViewById(R.id.exoPlayer);
playerView.setUseController(false);
playerView = itemView.findViewById(R.id.exoPlayer);
playerView.setUseController(false);
SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(
new DefaultRenderersFactory(context),
new DefaultTrackSelector(), new DefaultLoadControl());
playerView.setPlayer(player);
player.setPlayWhenReady(true);
player.seekTo(0, 0);
player.setRepeatMode(Player.REPEAT_MODE_ALL);
player.setVolume(0);
Uri uri = Uri.parse(resource);
MediaSource mediaSource = buildMediaSource(uri);
player.prepare(mediaSource, true, false);
player.addListener(new Player.EventListener() {
//...
}
} else {
seperator.setVisibility(View.GONE);
lytTutor.setVisibility(View.GONE);
}
}
private MediaSource buildMediaSource(Uri uri) {
return new ExtractorMediaSource.Factory(
new DefaultHttpDataSourceFactory("exoplayer-codelab")).
createMediaSource(uri);
}
Run Code Online (Sandbox Code Playgroud)
这是在我的 OnCreateViewHolder 中调用此方法:
if (workout.getCurrentExercsise().getTutor() != null) {
holder.showTutuorItems(activity, true, workout.getCurrentExercsise().getTutor().getItems().get(0).getResource());
} else {
holder.showTutuorItems(activity, false, null);
}
Run Code Online (Sandbox Code Playgroud)
在我的 OnBindViewHolder 中是一些 UI 内容并处理展开/折叠功能。这不会导致问题,因为如果没有 ExoPlayer,它也能正常工作。
| 归档时间: |
|
| 查看次数: |
3414 次 |
| 最近记录: |