gpt4 book ai didi

ios - iMessage 应用程序不断重新启动

转载 作者:行者123 更新时间:2023-11-30 12:04:56 26 4
gpt4 key购买 nike

每当我在 iMessage 应用程序外部滑动以打开另一个 iMessage 应用程序,然后通过向后滑动返回到我的 iMessage 应用程序时,我的 iMessage 应用程序都会再次加载。

甚至 MessagesViewControllerviewDidLoad 也会再次被调用。

我在 MessagesViewController 中的代码看起来像-

class MessagesViewController: MSMessagesAppViewController {

override func viewDidLoad() {
super.viewDidLoad()
openSuitableController()
}

override func willTransition(to presentationStyle: MSMessagesAppPresentationStyle) {
removeAllChildViewControllers()
}

override func didTransition(to presentationStyle: MSMessagesAppPresentationStyle) {
openSuitableController()
}
}

openSuitableController中,我只是将一个childViewController添加到MessagesViewController

由于应用程序再次启动,collectionView 被加载并滚动到顶部,导致闪烁。

如果您需要更多信息,请发表评论。

PS:我添加了 Objective-C 标签,因为我不认为这个问题是由于特定语言造成的。

最佳答案

我认为这是不可避免的,并且这正是 iMessage 管理其托管的 iMessage 应用程序的方式。即:当您滑出时,iMessage 框架会关闭您的应用程序,并启动您滑入的下一个应用程序。 iOS 11 及之前的版本就是如此,当然,将来可能会发生变化。

iMessage 有一种相当复杂的方式来呈现您的 UI,将其嵌入到自己的沙盒容器 View Controller 层次结构中,这是为了确保 iMessage 本身与私有(private)聊天数据和您的应用程序之间的安全信任边界。因此,与应用程序自行启动相比,呈现应用程序的开销更大,我的猜测是应用程序像这样重新启动,以最大限度地减少资源使用并保护 iMessage 免于耗尽其所需的资源。

值得让您的应用程序启动尽可能快(例如通过限制动态库加载时间),并记住您的初始内容在交换为存储的快照时的外观。

我认为,最大限度地减少应用程序启动和停止时完成的工作非常重要,以便在应用程序之间实现最平滑的转换。

当您从一个应用程序滑出到另一个应用程序时,iMessage 会生成前一个 UI 状态的快照图像,然后在滑回您的应用程序时,它会在您的应用程序进行初始化时显示该快照。

因此,仔细查看快照过程并尝试确保您的初始 UI 演示能够很好地从 iMessage 框架生成的快照过渡是值得的。

关于ios - iMessage 应用程序不断重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46784253/

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