ios应用UIApplication前后台切换代理方法在不同ios系统下的差异

对于一个完善的应用来说,需要在UIApplication的各个代理方法里进行相应的处理,特别是前后台切换时一般需要进行一些特定的操作;而对于不同版本的ios系统,其代理方法居然也存在着一些差异,不由得让人大跌眼镜。

IOS4:

// Pressing the home button
Will resign active.
Did enter background.
// Tapping app icon on Springboard
Will enter foreground.
Did become active.

// Pressing the lock button
Will resign active.
// Unlocking the device
Did become active.

IOS5及以后:

// Pressing the home button
Will resign active.
Did enter background.
// Tapping app icon on Springboard
Will enter foreground.
Did become active.

// Pressing the lock button
Will resign active.
Did enter background.
// Unlocking the device
Will enter foreground.
Did become active.

可以看到,ios4的锁屏和解锁不会触发didenterbackground方法和willenterforeground方法;而ios5中的didenterbackground方法通过UIApplicationState state = [[UIApplication sharedApplication] applicationState]可以区分是由按home触发还是按锁屏键触发;锁屏时状态为inactive,home键为background.而在willresignactive方法中,两种行为的state均为active。从个人的使用上来看,通过didenterbackground中的state可以很好的在实现上加以区分以实现相异的行为,而在4x系统下就比较麻烦,只能从流程上打主意,不利于实现。

时间: 2024-10-23 07:50:55

ios应用UIApplication前后台切换代理方法在不同ios系统下的差异的相关文章

objective-c-ios 如何实现前后台切换自动刷新的功能

问题描述 ios 如何实现前后台切换自动刷新的功能 如题 现在要达到的目的 我有两个页面 3个controller 一个页面1 一个页面2 一个是他们的父类 目的: 1.切换到后台 在切换到前台时 自动刷新一次(刷新函数已经写好没问题,函数名是autoRefreshing)2.比如是页面1在前台切换到后台后,再回到前台,只能页面1刷新,不能是点击进入页面2也刷新一次(我的问题就是 两个都要自动刷新)我用的方法: 在父类中 //把self添加到NSNotificationCenter的观察者中[[

Linux系统下Telnet的设置方法

  Linux系统下Telnet的设置方法 Linux系统下Telnet服务的配置步骤: 一.安装Telnet软件包(通常要两个) 1. Telnet-clIEnt (或 Telnet),这个软件包提供的是 Telnet 客户端程序; 2. Telnet-server ,这个软件包提供的是 Telnet 服务器端程序; 安装之前先检测是否这些软件包已安装,方法如下: [root@echo root]#rpm –q Telnet或[root@wljs root]#rpm –q Telnet-cli

Windows10系统下如何切换用户帐户

方法一:  Windows 10/8.1/8/7/XP系统均可通过同时按下“Windows+L”组合键在不同的用户帐户间进行切换.     方法二:   Win10系统:   1.在系统下同时按下“Windows+D”组合键,所有窗口将会最小化并切换到桌面:     2.此时再同时按下“Alt+F4”组合键,屏幕中央会弹出“关闭Windows”窗口,在“希望做什么”下方的下拉菜单中选择“切换用户”,并点击“确定”即可.     3.此时系统会切换到登录界面,在画面左下角列出了当前电脑上可以切换的

win8系统下关闭FN键的方法教程

  通常很多笔记本电脑中会带有Fn按键,该键盘主要配合F1-F12按键所使用,并支持对屏幕亮度声音进行调整,不过有部分用户在操作计算机的时候,经常按到FN键,造成误操作,故此很多人想将该按键关闭,那么在win8系统下我们应该如何关闭Fn键呢?下面本文就为大家详细介绍下关闭FN按键的方法! win8系统下关闭FN键的方法 1.进入控制面板:选择常规-高级启动 点立即重启. 2.选择:疑难解答. 3.选择:高级选项. 4.选择:UEFI固件设置. 5.点击:重启. 6.重启之后系统自动进入bios界

win7系统下qq群连接视频服务器失败出现错误代码21的解决方法

  win7系统下qq群连接视频服务器失败出现错误代码21的解决方法.一些网友反馈说win7系统下qq群连接视频服务器出现错误代码21,怎么办呢?大家都知道腾讯QQ功能强大,可视频.传输文件.语音等等.最近很多人使用QQ群视频提示"群视频连接服务器失败",导致QQ视频出现"群视频连接服务器失败"的原因有很多种,下面小编和大家分享具体的解决方法. 推荐:雨林木风win7旗舰版系统下载 qq群视频连接服务器失败原因 1.检查一下网络是不是有问题了; 2.还有一个问题是不

iOS 支付宝 微信支付 集成 支付成功不执行代理方法

iOS 支付宝或微信支付当支付成功后都会在AppDelegate中调用 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url; - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)anno

iOS UITableView代理方法详解

IOS UITableView的代理方法详解 一.补充 在上一篇博客中,http://my.oschina.net/u/2340880/blog/404605,我将IOS中tableView(表视图)的一些常用方法总结了一下,这篇将tableView的代理方法作了总结,对上一篇博客进行了补充. 二.UITableViewDataSourc(数据源代理) 1.必须实现的回调方法 返回每个分区的行数 - (NSInteger)tableView:(UITableView *)tableView nu

ios-关于IOS协议代理方法自动调用问题?

问题描述 关于IOS协议代理方法自动调用问题? 各位大牛好, 想问一个关于IOS协议代理的问题: 是否通过遵守某个协议,实现了其中的方法,对于这些方法来说,大多数情况下是 视图对象对其进行自动调用的吗? 例如:当表格不知道自己的行高,就去找实现了相关方法的代理?找它实现的相关方法 来自动获得行高? 小弟不太理解代理与协议方面的知识,希望可以有大牛解答,谢谢. 解决方案 你理解的不错,的确是这样,但是少了一步.除了遵守协议,实现方法之外,还要把自身设置成被委托对象.....delegate =se

ios开发-iOS开发 视图切换的方法,怎么用

问题描述 iOS开发 视图切换的方法,怎么用 视图切换,有几种方法,我知道几个,但是不知道怎么用,求大神的有用资源,谢谢 解决方案 1.add/remove view. 2.模态弹出. 3.导航push/pop