//获取到当前所在的视图

- (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开发 对生命周期的处理的更多相关文章

  1. android开发之生命周期

    android开发之生命周期 一:Activity的生命周期: 这几天了了解了安卓Activity的生命周期,对于生命周期有了大概的理解: 一个Activity的生命周期也就是Activity从生成到 ...

  2. Android开发——Activity生命周期

    Android开发--Activity生命周期 Activity作为四大组件之首,也是使用最频繁的一种组件.本文将主要讲解Activity生命周期,包括正常情况下的Activity生命周期和异常情况下 ...

  3. 浅尝Spring注解开发_Bean生命周期及执行过程

    Spring注解开发 浅尝Spring注解开发,基于Spring 4.3.12 包含Bean生命周期.自定义初始化方法.Debug BeanPostProcessor执行过程及在Spring底层中的应 ...

  4. android开发------Activity生命周期

    这几天工作比较忙,基本没有什么时间更新播客了. 趁着今晚有点时间,我们来简单说一下什么是Activity生命周期和它们各阶段的特征 什么是生命周期 在还没有接触android开发的时候,听到有人说Ac ...

  5. Android开发--Activity生命周期回顾理解

    Activity和Servlet一样,都用了回调机制.我们通过类比servlet来学习Activity.当一个servlet开发出来之后,该servlet运行于Web服务器中.服务器何时创建servl ...

  6. 【Xamarin开发IOS-IOS生命周期】

    iOS的应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的. iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的.在后台时,程序会受 ...

  7. Servlet程序开发-- Servlet生命周期

    生命周期是一个程序的存在周期,受容器管理,所以容器决定生命周期. 生命周期包括 加载,初始化,服务,销毁,卸载 5个部分 加载:第一次使用的时候加载 初始化:init方法, 失败的话,直接卸载,如果成 ...

  8. 用SVN进行团队开发协作生命周期详解

    目录 前言 面向人群 背景 解决方案 团队开发生命周期 创建新项目 创建分支 切换分支 合并代码 正式版本发布 bug修复 结束语 前言 查找了SVN的相关知识无论是园子里还是百度都只有一些理论,而有 ...

  9. Spring注解驱动开发(二)-----生命周期、属性赋值

    bean的生命周期 bean的生命周期:bean创建---初始化----销毁的过程容器管理bean的生命周期:我们可以自定义初始化和销毁方法:容器在bean进行到当前生命周期的时候来调用我们自定义的初 ...

随机推荐

  1. spring mvc获取绝对路径的几种方法

    1.首先如果是在一个controller方法中,则很简单,直接用下面语句. @RequestMapping("categoryHome") public ModelAndView ...

  2. Visual Studio 2017 : client version 1.22 is too old

    使用Vs2017 编译 eShopOnContainers-ServicesAndWebApps 时,报了错误: Microsoft.DotNet.Docker.CommandLineClientEx ...

  3. [置顶] Xamarin android沉浸式状态栏

    虽然关于android "沉浸式"状态栏有很多博客介绍过,从小菜到大神无一例外.我第一次看到这种"沉浸"式的效果我也以为真的是这么叫,然而根本不是这么回事,完全 ...

  4. NET Framework 版本和依赖关系

    原文:https://docs.microsoft.com/zh-cn/dotnet/framework/migration-guide/versions-and-dependencies 每个版本的 ...

  5. mysql TIMESTAMP与DATATIME的区别---转载加自己的看法

    from:http://lhdeyx.blog.163.com/blog/static/318196972011230113645715/ from:http://blog.csdn.NET/zht6 ...

  6. Oracle ADG搭建

    Oracle Active Data Guard搭建 一:安装 1.基础环境配置 1.1.开启强制日志记录 DG日志发送方式中ARCH进程和LGWR进程的ASYNC模式都是基于日志同步的,所以我们必须 ...

  7. 豹哥嵌入式讲堂:ARM开发中有用的文件(1)- source文件

    大家好,我是豹哥,猎豹的豹,犀利哥的哥.今天豹哥给大家讲的是嵌入式开发里的source文件种类. 众所周知,嵌入式开发属于偏底层的开发,主要编程语言是C和汇编.所以本文要讲的source文件主要指的就 ...

  8. 使用ListView控件展示数据

    属性名称    说明items   指定显示那种视图View   指定显示那种视图largelmagelist  大图标图像的imagelist控件SmallLmagelist  小图标图像的imag ...

  9. 面向对象 初级版 (Preview) 未完

    概述: 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数里,日后使用无需重复编写,直接调用韩顺即可. 面向对象: 对函数进行分类和封装,让开发'更快更强' 面向对象和面向过程的通 ...

  10. java多线程(三)-Executors实现的几种线程池以及Callable

    从java5开始,类库中引入了很多新的管理调度线程的API,最常用的就是Executor(执行器)框架.Executor帮助程序员管理Thread对象,简化了并发编程,它其实就是在 提供了一个中间层, ...