gpt4 book ai didi

android - 如果我在 Activity 暂停时调用 cancel(),则不会调用 CountDownTimer onFinish()

转载 作者:行者123 更新时间:2023-12-03 22:48:56 24 4
gpt4 key购买 nike

我有一个通过 MediaPlayer 播放音乐的 Activity .通常当我想停止歌曲时,我将 MediaPlayer 传递给 CountDownTimer使音量变为零,然后释放 MediaPlayer。这似乎工作正常,除了当我的 Activity 暂停时遇到问题,例如在触摸主页按钮后。

我调用 cancel()onPause 中的倒计时计时器上,但似乎由于 Activity 正在暂停,CountDownTimer 在销毁之前从未收到消息(?),因此 finish()不调用 CountDownTimer。

这样做的结果是,在退出应用程序后,音乐会继续以 CountDownTimer 中上次设置的音量继续播放,但它永远不会结束。所以现在我被困在我的应用程序之外,MediaPlayer 正在运行并且无法阻止它(非常糟糕)。

CountDownTimer 不被调用是否正常 onFinish当 Activity 退出时,即使我叫取消?

这是我的代码:

public void StopSong(boolean fadeout){
musicPlaying = false;
if(_player != null) {
final int fadeTime = 1000;
CountDownTimer timer = new CountDownTimer(fadeTime,50) {
final private MyMusicPlayer mFadePlayer = _player;

@Override
public void onTick(long millisUntilFinished) {
mFadePlayer.setFade((float)millisUntilFinished / (float)fadeTime);
Log.d("tag", "Fade timer " + millisUntilFinished+ "ms remaining.");
}

@Override
public void onFinish() {
mFadePlayer.stop();
mFadePlayer.release();
Log.d("tag", "Fade timer finished, releasing resource.");
}
};
timer.start();
mFadeTimers.add(timer);
Log.d("tag", "Song stopping, starting fade timer.");
_player = null;
}
}

在 onPause 中:
    for(CountDownTimer t : mFadeTimers){
Log.d("tag", "Cancelling fade timer on destroy.");
t.cancel();
}
mFadeTimers.clear();

如果一切正常,我会看到“正在取消淡入淡出计时器”日志消息,然后是“淡入淡出计时器已完成,正在释放”,但我从未收到 onFinish() logcat 消息。

我只看到这个:
 tag     Song stopping, starting fade timer.
tag Application exiting, destroying all audio resources
tag Cancelling fade timer on destroy.

如何在退出 Activity 时成功中止所有倒计时?

最佳答案

看看source code .你会看到 cancel()不打电话 onFinish() ,这正是 CountDownTimer 的设计方式。

您可以调用onFinish()虽然你自己:

for(CountDownTimer t : mFadeTimers){
Log.d("tag", "Cancelling fade timer on destroy."); // ought to read "in onPause", right?
t.cancel();
t.onFinish();
}
mFadeTimers.clear();

关于android - 如果我在 Activity 暂停时调用 cancel(),则不会调用 CountDownTimer onFinish(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12992530/

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