1. 程式人生 > >App開發 對生命周期的處理

App開發 對生命周期的處理

roo return 周期 self present suse back sta keywindow

//獲取到當前所在的視圖

- (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開發 對生命周期的處理