0

我在 Unity 中创建了一个新的空项目并在 iOS 平台上构建它并在 Mac Catalyst 上运行它。但是,我想弄清楚关闭和最小化之间的区别。在 log 的帮助下,他们都调用了applicationWillResignActiveapplicationDidEnterBackground。但是没有backgroundTasks可做,那么为什么在单击最小化按钮applicationWillTerminate后单击关闭按钮不会调用呢?applicationDidEnterBackground

我问这个问题是因为如果有 backgroundTasks 要做,那么点击关闭按钮并不会真正退出应用程序,它会做 backgroundTasks。所以我想在单击关闭按钮时,我不想做背景任务,只需调用applicationWillTerminate并退出它。但是我该怎么做呢?让我很困惑很长时间...

任何建议将不胜感激!

4

1 回答 1

0

你说:

关闭和最小化都进入后台和做后台任务,对吗?

是的beginBackgroundTask,无论用户是最小化应用程序还是关闭窗口,任务都会继续。如果用户明确退出应用程序,它甚至会这样做。只有崩溃或强制退出将不允许后台任务继续。

我不希望我的应用在单击关闭后执行后台任务,因为后台任务需要几秒钟才能完成。

问题是您不知道它是否已被最小化或关闭。macOSwillMiniaturizeNotification通知对 Catalyst 应用程序不可用。

应用程序需要等待退出,直到后台任务完成。我只想在点击关闭后立即退出我的应用,不需要做后台任务,但我不知道怎么做?

这在 Catalyst 应用程序中可能根本不可能。鉴于这对最终用户完全透明并且只需要几秒钟,您可能必须决定是否接受此约束。如果没有,您可能会被迫考虑重写 AppKit。


上面是一个 Catalyst 问题,但是对于 AppKit 开发人员来说,要让应用程序在您关闭窗口时退出,请实现 applicationShouldTerminateAfterLastWindowClosed. 这里不相关,但它是如何控制 AppKit 中关闭按钮的行为。

于 2021-10-13T14:23:04.503 回答