在App開發(fā)過程中,我們經(jīng)常需要監(jiān)聽App的生命周期贴硫。一般情況下是通過注冊監(jiān)聽,接收系統(tǒng)的通知英遭,處理通知結(jié)果。
實現(xiàn)三步曲:
1.添加監(jiān)聽
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(p_didFinishLaunching:) name:UIApplicationDidFinishLaunchingNotification object:nil];
2.定義接收函數(shù)
- (void)p_didFinishLaunching:(NSNotification *)obj {
// TODO:處理業(yè)務代碼
}
3.銷毀監(jiān)聽
- (void)dealloc {
[NSNotificationCenter.defaultCenter removeObserver:self];
}
可以看出汁尺,整個過程雖然比較簡單多律,但是步驟較多,每次監(jiān)聽都這么寫比較浪費時間菱涤。于是本篇文章的主角誕生。
引入AJAppEvent
庫
pod 'AJAppEvent'
實現(xiàn)代碼:
// 添加監(jiān)聽
[self ajAddObserverName:name block:^(AJAppEventModel * _Nonnull eventModel) {
NSLog(@"%@", eventModel.name);
}];
// 發(fā)送通知
[self ajPostNotificationName:name object:nil userInfo:nil];
一步搞定粘秆,是不是效率高很多。
實現(xiàn)思路:
AJAppEvent庫實現(xiàn)并非有什么難點殷勘,只是將簡單重復的事情集中統(tǒng)一處理昔搂,提高開發(fā)效率。源碼請點擊鏈接
AJAppEvent
中支持一下通知類型:
// 應用程序進入后臺
UIApplicationDidEnterBackgroundNotification
// 應用程序?qū)⒁M入前臺
UIApplicationWillEnterForegroundNotification
// 應用程序完成啟動
UIApplicationDidFinishLaunchingNotification
// 應用程序由掛起變的活躍
UIApplicationDidBecomeActiveNotification
// 應用程序掛起(有電話進來或者鎖屏)
UIApplicationWillResignActiveNotification
// 應用程序終止(后臺殺死摘符、手機關機等)
UIApplicationWillTerminateNotification
// 應用程序收到內(nèi)存警告
UIApplicationDidReceiveMemoryWarningNotification
// 當有重大時間改變(凌晨0點,設備時間被修改瘩绒,時區(qū)改變等)
UIApplicationSignificantTimeChangeNotification
// 設備方向?qū)⒁淖?UIApplicationWillChangeStatusBarOrientationNotification
// 設備方向改變
UIApplicationDidChangeStatusBarOrientationNotification
// 設備狀態(tài)欄frame將要改變
UIApplicationWillChangeStatusBarFrameNotification
// 設備狀態(tài)欄frame改變
UIApplicationDidChangeStatusBarFrameNotification
// 應用程序在后臺下載內(nèi)容的狀態(tài)發(fā)生變化
UIApplicationBackgroundRefreshStatusDidChangeNotification
// 本地受保護的文件被鎖定,無法訪問
UIApplicationProtectedDataWillBecomeUnavailable
// 本地受保護的文件可用了
UIApplicationProtectedDataDidBecomeAvailable
// 截屏通知
UIApplicationUserDidTakeScreenshotNotification