4

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

我还尝试将该逻辑检查移至onStart()[而不是onCreate],因为切换自动播放的菜单会占据全屏并导致上一个活动(页面)执行onStop()。虽然这个设置阻止了onCompletionListener再次执行......它仍然没有“取消”前一个onCompletionListener. 注意:仅当活动(页面)以autoplay=on.

我还曾短暂尝试super.recreate()过该特定活动,以尝试“重新启动”所有内容(希望包括onCompletionListener. 然而,结果并不漂亮(活动被屏蔽并且从未重新初始化)。

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

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

4

3 回答 3

0

这里有一些可能的解决方案:

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

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

于 2012-12-09T22:38:02.920 回答
0

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

于 2012-12-09T22:01:31.690 回答
0

如果你想取消之前的设置onCompletionListener,你可以简单地设置一个不做任何事情的新设置。

于 2012-12-09T22:18:35.517 回答