使用label檢驗通知

進入背景-1 進入前景+2

什麼是前景什麼又是背景呢

簡單說就是在程式畫面就是前景

你跳到畫面外的桌面就成為背景

我們直接來看程式

class ViewController: UIViewController {
@IBOutlet weak var showNumbers: UILabel!
var number = 0
func enterBackground(noti:Notification) {
number -= 1
showNumbers.text = "\(number)"
}
func enterForeground(noti:Notification) {
number += 2
showNumbers.text = "\(number)"
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
NotificationCenter.default.addObserver(self, selector:
#selector(ViewController.enterBackground(noti:)), name:
Notification.Name.UIApplicationDidEnterBackground, object: nil)
NotificationCenter.default.addObserver(self, selector:
#selector(ViewController.enterForeground(noti:)), name:
Notification.Name.UIApplicationWillEnterForeground, object: nil)
}

在viewdidload裡面先宣告事件

通知的對象就是自己

有兩個通知 差別在於時間 一個是進入背景enterBackground

每當進入背景時就會執行enterBackground 你就可以在這裡-1

另一個是enterForeground

每當進入前景時執行 你就可在此+2

相當簡單

最後有多測試一項就是我們常使用Home鍵點兩下狀態 到底是否有進入背景

在經過測試結果是否的 enterBackground並不會執行

那這狀態會執行哪段程式呢?

applicationWillTerminate

沒錯 就是照字面上的意思 home兩下通常就是你要刪除APP的狀態

所以Home兩下的狀態我們要寫在applicationWillTerminate

就醬