有没有办法取消onCompletionListener?

时间:2012-12-09 21:49:21

标签: android

我正在编写一个具有自动播放功能的应用,基本上就像一本故事书。我为每个活动(页面)设置了一个媒体播放器onCompletionListener,这样当叙述完成后,它就会启动下一个活动(页面)。有一个选项可以关闭自动播放(所以你可以按自己的节奏阅读)...但是关闭它会导致活动 - 当前页面 - “记住”之前的onCompletionListener电话(作为后退按钮用于导航回上一个活动)。随后的活动(页面)工作正常......因为启动onCompletionListener的逻辑检查使其无法执行。

我还尝试将该逻辑检查移至onStart() [而不是onCreate],因为切换自动播放的菜单会占用整个屏幕并导致之前的活动(页面)执行{ {1}}。虽然此设置会使onStop()再次执行...但它仍然不会“取消”之前的onCompletionListener。注意:仅当使用onCompletionListener启动活动(页面)时,这只是一个问题。

我还尝试autoplay=on针对该特定活动试图“重启”所有内容(希望包括super.recreate())。但是,结果并不漂亮(活动消失了,从未重新初始化)。

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

我的目标是API 11及更高版本。任何想法/建设性的批评都会受到赞赏。

3 个答案:

答案 0 :(得分:0)

“取消”它的方法是使用release方法。当你打开一个新页面(活动)时,你应该考虑这样做

答案 1 :(得分:0)

如果您想取消之前设置的onCompletionListener,您只需设置一个不执行任何操作的新内容。

答案 2 :(得分:0)

以下是一些可能的解决方案:

  1. 对于onDestroy,使用setOnCompletionListener(null)。

  2. 根据所需的设置更改,还设置一个全局标志(也将在创建应用程序时设置),并在侦听器事件中检查标志。