gpt4 book ai didi

java - Exoplayer 线程错误 NoSuchElementExceptionat java.util.ArrayDeque.removeFirst

转载 作者:行者123 更新时间:2023-12-01 16:44:53 30 4
gpt4 key购买 nike

我刚刚从 MediaPlayer 切换到 Exoplayer,以便在游戏应用程序中播放背景音乐。在我的所有测试中,它似乎工作正常,但在部分发布后,我开始看到崩溃

crashalytics:
NoSuchElementException at java.util.ArrayDeque.removeFirst (ArrayDeque.java:264)
com.google.android.exoplayer2.ExoPlayerImpl.notifyListeners (ExoPlayerImpl.java:737)
com.google.android.exoplayer2.ExoPlayerImpl.updatePlaybackInfo (ExoPlayerImpl.java:710)
com.google.android.exoplayer2.ExoPlayerImpl.handlePlaybackInfo (ExoPlayerImpl.java:652)
com.google.android.exoplayer2.ExoPlayerImpl.handleEvent (ExoPlayerImpl.java:595)
com.google.android.exoplayer2.ExoPlayerImpl$1.handleMessage (ExoPlayerImpl.java:127)

经过谷歌搜索后,它似乎与线程有关,我需要在创建它的同一线程上调用它。对于我的实现问题:我的游戏有 4 个 Activity ,其中一个是游戏运行者。主要 Activity 有1个exoplayer Activity 2有1个 Activity 3有1个gameactivity 正在游戏线程内创建自己的 Activity

每次我需要 exoplayer 时,我都会调用此方法:

   private SimpleExoPlayer createSimpleExoPlayer(Context context, int resId, boolean repeat) {
SimpleExoPlayer exoPlayer = new SimpleExoPlayer.Builder(context).build();
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context,
Util.getUserAgent(context, "appname"));
Uri uri = RawResourceDataSource.buildRawResourceUri(resId);
MediaSource source = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(uri);
exoPlayer.prepare(source);
if (repeat)
exoPlayer.setRepeatMode(Player.REPEAT_MODE_ALL);
//exoPlayer.setPlayWhenReady(true);
return exoPlayer;
}

当游戏循环内切换背景音乐时,玩家可能会被释放并重新创建。那么这可能就是造成问题的原因吗?我是否误解了它的工作原理,也许我应该只拥有一个实例,或者像我一样拥有多个实例可以吗?欢迎任何建议。

最佳答案

问题是我有一个计时器在过期时调用 exoplayer,因此从另一个线程调用它

关于java - Exoplayer 线程错误 NoSuchElementExceptionat java.util.ArrayDeque.removeFirst,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61800571/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com