gpt4 book ai didi

ios - 当用户进入后台模式时使用 viewWillDisappear

转载 作者:行者123 更新时间:2023-11-28 18:17:57 25 4
gpt4 key购买 nike

我制作了一个播放器应用。当用户关闭应用程序(进入后台模式)并调用 viewWillDisappear 时,播放器停止播放音频。

我无法在 applicationDidEnterBackground 中停止,因为在这种方法中我已经播放了音频,以便可以在后台访问音频。

但是当我想在应用程序内部更改 View 并调用 viewWillDisappear 并且显然音频停止时,问题就出现了。

是否有任何选项仅在用户关闭应用程序时调用 viewWillDisappear,或者在用户更改所选选项卡栏或打开其他 View Controller 时不调用 viewWillDisappear。

谢谢

最佳答案

正如@Bhumit 所说,您无法控制 callback methods View 生命周期(或应用程序生命周期)。当用户与您的应用程序交互时,它们会在特定时间被调用。

让我们考虑一下您可能想在这里做什么:

- (void)viewWillDisappear
{
[super viewWillDisappear];
[[AudioPlayerClass sharedInstance] stop]; // an example way to stop playing the audio
}

viewWillDisappear 在用户关闭模态视图、导航到导航 Controller 上的新 View 或点击选项卡栏 Controller 中的选项卡时被调用。如果您的用户打开设置选项卡,音频将停止。如果他们打开另一个标签,它就会停止。您已经描述了这个问题。

我们希望应用程序在 View 消失并且满足其他一些条件时停止播放音频。让我们看一下代码:

- (void)viewWillDisappear
{
[super viewWillDisappear];
if (something)
{
[[AudioPlayerClass sharedInstance] stop]; // an example way to stop playing the audio
}
}

根据您的问题,该条件是应用程序关闭的时间。

如果有某种方法仅在 View 消失且应用关闭时更改音频会怎样?

事实是我们可以简化这一点,因为如果应用程序正在关闭,那么 View 也会消失。所以我们真正想要的是:

if(/* app is closing */) 
{
/* Stop the music. */
}

好吧,为此我们在应用程序委托(delegate)中定义了应用程序生命周期方法。您可能想要使用的一个是 applicationWillResignActive:,它会在应用程序关闭之前调用,但同时它仍处于打开状态。

- (void)applicationWillResignActive:(UIApplication *)application
{
[[AudioPlayerClass sharedInstance] stop]; // an example way to stop playing the audio
}

让我困惑的是你说你使用applicationDidEnterBackground让音频在后台可以访问,但是你想在进入后台时停止播放。

这让我感到困惑,因为我不确定您是要停止音频还是启用音频。此外,您可能不应该在应用程序停用之前运行的委托(delegate)方法中配置回放 session 。

最好在 application:didFinishLaunchingWithOptions: 中配置一次 session ,或者甚至更好,applicationDidBecomeActive:。这样,您的应用将在需要时拥有所需的正确 session ,然后您可以在应用生命周期的后期自由进入您想要的状态。

关于ios - 当用户进入后台模式时使用 viewWillDisappear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29536917/

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