App開發 對生命周期的處理
//獲取到當前所在的視圖
- (UIViewController *)presentingVC:(UIApplication *)application{
UIWindow * window = application.keyWindow;
if (window.windowLevel != UIWindowLevelNormal){
NSArray *windows = [[UIApplication sharedApplication] windows];
for(UIWindow * tmpWin in windows){
if (tmpWin.windowLevel == UIWindowLevelNormal){
window = tmpWin;
break;
}
}
}
UIViewController *result = window.rootViewController;
while (result.presentedViewController) {
result = result.presentedViewController;
}
if ([result isKindOfClass:[MYTabBarViewController class]]) {
result = [(MYTabBarViewController *)result selectedViewController];
}
if ([result isKindOfClass:[UINavigationController class]]) {
result = [(UINavigationController *)result topViewController];
}
return result;
}
#p --當應用程序退出後臺進行的操作
- (void)applicationDidEnterBackground:(UIApplication *)application {
//進入後臺執行的操作
UIViewController *viewC = [self presentingVC:application];
NSLog(@"viewC==%@",[viewC class]);
if ([viewC class]== [LoginViewController class]) {
[[NSUserDefaults standardUserDefaults] setObject:@"1" forKey:@"root"];
}else{
[[NSUserDefaults standardUserDefaults] setObject:@"0" forKey:@"root"];
//[self goBackForViewController];
}
}
#p --應用程序進入後臺再進入前臺進行的操作
- (void)applicationWillEnterForeground:(UIApplication *)application {
//進入前臺執行的操作---原生頁面
if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"root"] isEqualToString:@"0"]) {
//進入原生頁面的不作處理
[self goBackForViewController];
}
//如果停留在H5頁面,重新加載,防止session過期問題
else{
[self showViewControllers];
}
}
Documents:在iOS應用開發中使用應用周期進行相關的操作,可以很好處理應用生命周期之間的交互問題
App開發 對生命周期的處理