Swift:AppDelegate func应用程序调用,但是接下来会发生什么?

时间:2018-07-18 07:29:20

标签: ios swift viewdidload

我遇到了我的应用调用的问题:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions [UIApplicationLaunchOptionsKey: Any]?) -> Bool

然后执行操作,最后调用func applicationDidEnterBackground

该应用程序实际上包含在应用程序堆栈中。我可以切换回模拟器的主屏幕,再回到程序。不幸的是,函数viewDidLoad从未被调用。

如何调试发生的情况以及应用程序在哪里“停止”并调用后台功能而不是活动的?

谢谢。

3 个答案:

答案 0 :(得分:0)

您的应用可能进入后台的原因有多种,从“按下”模拟器/设备上的主页按钮到实际calling the suspend method

一些调试解决方案:检入Xcode调试导航器,添加异常断点,使用工具调查可疑行为。

也检查 App Life CycleView Controller Life Cycle

答案 1 :(得分:0)

当应用程序返回到前台时,永远不会调用ViewDidLoad。您必须设置一个观察器,该观察器在应用程序回到前台时触发,然后在ViewController中执行您想做的事情。

NotificationCenter.default.addObserver(self, 
                                       selector: #selector(funcCalledWhenReturningInForeground), 
                                       name: .UIApplicationWillEnterForeground,
                                       object: nil)

或者您可以将其用作观察者的名称(就像viewWillAppear和viewDidAppear逻辑一样)

UIApplicationDidBecomeActive

内幕,要知道应用何时在后台运行,您可以使用

UIApplicationWillResignActive

答案 2 :(得分:0)

为了检测在ViewController中在后台/前景中输入的应用 在您的视图控制器中添加观察者
例子

 NSNotification.Name.UIApplicationWillResignActive