强制终止后未调用 AppDelegate 方法

Posted

技术标签:

【中文标题】强制终止后未调用 AppDelegate 方法【英文标题】:AppDelegate method not called after force terminating 【发布时间】:2018-01-30 10:08:59 【问题描述】:

我试图弄清楚 AppDelegate 方法是如何工作的。

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate 

    var window: UIWindow?

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

    func applicationWillResignActive(_ application: UIApplication) 
        print("willResignActive")
    

    func applicationDidEnterBackground(_ application: UIApplication) 
        print("didEnterBackground")
    

    func applicationWillEnterForeground(_ application: UIApplication) 
        print("willEnterForeground")
    

    func applicationDidBecomeActive(_ application: UIApplication) 
        print("didbecomeActive")
    

    func applicationWillTerminate(_ application: UIApplication) 
        print("willTerminate")
    

第一次启动应用程序时,它似乎按预期工作。 但是一旦强行终止应用程序,之后这些方法就不会被调用了。

有没有办法在强制终止应用后调用这些方法?

xcode 9.2 swift4 模拟器上的ios11.2

【问题讨论】:

关闭应用程序时连接终止。这样就不会调用 app-delegate 中的方法。 【参考方案1】:

至少func application(_:didFinishLaunchingWithOptions) 总是在应用启动时被调用。是什么让您认为不是?

请注意,在您强行终止正在运行的应用后,您可能拥有的调试器连接会终止,并且新启动的应用不会自动重新连接到您的调试器。

【讨论】:

因为强制终止后即使重启也不输出打印调试。但我第一次听说调试器连接。

以上是关于强制终止后未调用 AppDelegate 方法的主要内容,如果未能解决你的问题,请参考以下文章

应用程序重启后未调用iOS OneSignal handleNotificationReceived回调

UIAlertView 委托方法没有调用?

异步任务;调用方法 onPreExecute() 后未调用 doInbackground()

主页启动器强制停止后未收到Android AppWidget的按钮单击事件

在 reloadData 后未调用 cellForRowAtIndexPath

c++11的线程,怎么终止