iOS应用程序上的onResume/onPause

n17*_*911 11 ios

在Android上,当我编写应用程序时,我需要实现onResume/onPause,以便我的活动转到后台并从前台返回.我已经google了,如果我需要如何为iOS做同样的事情.但我找不到任何有用的东西.你能否告诉我,我需要做些什么来处理我的iOS应用程序进入后台并回到前台?

谢谢.

Pix*_*xel 15

在 Swift 中,您可以使用

    NotificationCenter.default.addObserver(self, selector: #selector(onPause), name:
        UIApplication.willResignActiveNotification, object: nil)
    
    NotificationCenter.default.addObserver(self, selector: #selector(onResume), name:
        UIApplication.willEnterForegroundNotification, object: nil)
Run Code Online (Sandbox Code Playgroud)

@objc func onPause() {
    
}

@objc func onResume() {

}
Run Code Online (Sandbox Code Playgroud)

请注意,在实践中,我发现更换UIApplication.willEnterForegroundNotificationUIApplication.didBecomeActiveNotification工作更好,因为onResume如果你点击两次主页按钮,打开iOS版“打开的应用程序”屏幕,然后还引发,然后立即点击应用集中它。


Ear*_*rey 13

有一个专用类接收通常称为XXXApplicationDelegate的事件的代理回调(来自应用程序实例本身).

在那里,您需要为应用程序生命周期实现委托方法.

- (void)applicationWillResignActive:(UIApplication *)application {
}

- (void)applicationDidEnterBackground:(UIApplication *)application {
}

- (void)applicationWillEnterForeground:(UIApplication *)application {
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
}

- (void)applicationWillTerminate:(UIApplication *)application {
}
Run Code Online (Sandbox Code Playgroud)

  • 问题涉及控制器生命周期而不是应用程序生命周期. (2认同)

F.O*_*O.O 5

你在找

override func viewWillDisappear(animated: Bool) {}
Run Code Online (Sandbox Code Playgroud)

暂停播放

override func viewWillAppear(animated: Bool) {}
Run Code Online (Sandbox Code Playgroud)

对于onResume

其他答案是指应用程序生命周期回调,而不是控制器(Android中的Activity)回调。

  • 那根本是不正确的。OP明确询问“要处理我的iOS应用程序从后台返回到前台,我需要做什么?” 您引用的两种方法与应用程序的BACK / FORG并不对应,而是与任何视图控制器的根视图生命周期完全不同。 (11认同)
  • 也许您应该查看有关特定方法及其作用的Android文档。onResume和onPause与活动相关,而不是应用程序生命周期。还提到了问题中的活动。因此,如果这是语义问题,那就是2对1。为什么不查看您的答案? (2认同)
  • 需要说明的是,每次 Activity 出现在前台时都会调用 Android 的 `onResume`,即使在来回切换应用程序或关闭和打开屏幕时也是如此。另一方面,iOS `viewDidAppear` 仅在控制器视图第一次出现在屏幕上时被调用一次。 (2认同)
  • viewDidAppear 只运行一次,但每次进入活动时,android 中的 onResume 都会运行。 (2认同)