gpt4 book ai didi

android - 在 onStart 之前调用 onStop

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:01:10 25 4
gpt4 key购买 nike

我有一个从 AlarmManager 调用的 Activity 。这是一个报警信息。

当 Activity 被 Key Guard 调用时,生命周期从 onCreate -> onStart -> onResume -> onPause -> onStop 然后回到 onCreate -> onStart -> onResume。

因为是闹钟activity,我把MediaPlayer.stop这一行放在了Activity的onStop里面,但是现在闹钟声音一开始就停止了。

如果我将 MediaPlayer.stop 放在 onDestroy 中,我会得到正确的行为,但如果用户按下主页按钮, Activity 就会消失,声音会继续播放。

谁能说出为什么在这种情况下会调用 onPause 和 onStop?

编辑:在日志中进行一些调查后,我发现了这一行:

11-26 17:39:01.273: I/ActivityManager(385): Activity reported stop, but no longer stopping: ActivityRecord{41827a90 u0 net.xisberto.workschedule/.AlarmMessageActivity}

最佳答案

好吧,一年多后我意识到这个问题从来没有得到答案,尽管我必须处理这个问题,所以这里是:

现在我在 onResume 期间启动 MediaPlayer,但如果它已经在播放,我不会再次启动它:

@Override
protected void onResume() {
super.onResume();
...
if (!mMediaPlayer.isPlaying()) {
mMediaPlayer.start();
}
...
}

我在 onStop 期间停止它,但前提是 Activity isFinishing:

@Override
protected void onStop() {
super.onStop();
if (isFinishing()) {
if (mMediaPlayer != null) {
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
}
} else {
...
}
}

由于在所描述的情况下 Activity 没有完成,而是重新启动(我认为是配置更改),MediaPlayer 不会停止。

我的代码并不完全像那样,因为我使用了一些其他功能,并且我使用通知将用户带回 Activity 。完整代码在这里:https://github.com/xisberto/workschedule/blob/master/src/net/xisberto/work_schedule/AlarmMessageActivity.java

关于android - 在 onStart 之前调用 onStop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13571917/

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