我正在编写一个具有自动播放功能的应用程序,基本上就像一本故事书。我为每个 Activity (页面)设置了一个媒体播放器 onCompletionListener,以便在叙述完成后,它开始下一个 Activity (页面)。有一个选项可以关闭自动播放(因此您可以按照自己的节奏阅读)……但是关闭它会导致 Activity ——当前页面——“记住”之前的 onCompletionListener 调用(因为使用了后退按钮导航回上一个 Activity )。随后的 Activity (页面)工作正常......因为启动 onCompletionListener 的逻辑检查阻止它被执行。

我还尝试将该逻辑检查移动到 onStart() [而不是 onCreate ],因为切换自动播放的菜单会接管全屏并导致上一个 Activity (页面)执行 onStop() 。虽然此设置可防止 onCompletionListener 再次执行……但它仍然不会“取消”之前的 onCompletionListener 。注意:这仅在使用 autoplay=on 启动 Activity (页面)时才会出现问题。

我还针对该特定 Activity 简要尝试了 super.recreate() 以尝试“重新启动”一切(希望包括 onCompletionListener )。然而,结果并不漂亮( Activity 被取消并且从未重新初始化)。

我没有包含任何代码,因为(对我而言)这更像是一个程序问题。 1. onCompletionListener 可以“取消”吗?如果是这样,如何? 2. 如果不是,(因为我对 java/android 比较陌生)重新创建方法是否可以接受/有益于“重置”整个 Activity (以及其中的 onCompletionListener)?

我的目标是 API 11 及更高版本。任何想法/ build 性的批评将不胜感激。

最佳答案

如果你想取消之前设置的 onCompletionListener ,你可以简单地设置一个什么都不做的新的。

关于android - 有没有办法取消 onCompletionListener?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13792222/

10-11 00:16