怎样退出App之前唤醒还有一个App?
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载。
假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^
我要捐赠: 点击捐赠
Cocos2d-X源代码下载:点我传送
SDK并没有提供终止应用程序的方法。
要想终止应用程序,苹果推荐的唯一的方式是按下Homebutton。
可是Foundation框架中集成了Darwin框架,从而我们能够使用C函数exit(0)来终止Application。
UIApplication的openUrl方法则是退出应用程序的还有一种方法。
当你在代码中调用OpenURL方法时,你的App进程会被终止(挂起),还有一个App则被唤醒。
当然两种退出App的机制和终于效果并不同样。
当你使用exit(0)退出程序时,你的App并不不过退出前台,程序所占用的内存也被清除了——这是不可恢复的。
假设再次Launch这个App,iOS将又一次从磁盘中读取二进制——这是一份全新的App映像。
openURL则不同。它不过把你的程序挂起,这是可恢复的。
你的App不过从前台退出,但后台中仍然存在着。
用户能够在某个时候“唤醒”它,于是你的App又回来了,此时应用程序的状态仍然唤醒之前的状态。
当然,万一你运气不好,iOS也会将你的App彻底从内存中回收,
一如exit(0)所做的一样。这通常是系统内存紧张的时候。
这两种方法在某些时候可能须要并存。
比如,我们想在App退出之前。唤醒还有一个App。比方Safari。
同一时候我们希望自己的App是真正的“退出”,回收App的全部内存。
这是一个“悖论”。由于不管exit(0)还是openURL,一旦运行之后,操作系统就会终止进程的运行。
只要运行二者中的不论什么一句语句。另外一个语句就无法运行——由于进程已经终止了。
但在某种情况下,通过对iOS多任务机制的巧妙利用。这个悖论却是真实成立的。
比如,我们能够利用例如以下O-C代码来实现这个目的:
[self performSelector:@selector(exitApp)withObject:nil afterDelay:0.5];
[[UIApplication sharedApplication]openURL:
[NSURLURLWithString:@"appScheme://"]];
exitApp方法实际上就是一句代码exit(0)。
这样二者就实现并存了。
首先。我们让exit(0)延迟0.5秒再运行,而在此之前openURL当然早就运行完了。
performSelector:afterDelay方法将会调度一个任务在某个时间后运行。
当然,这个时间不能太长,】。
由于iOS同意app在进入后台之后仍然有一段“存活”时间,可是这个时间不能太长,
这样即算后面的openURL方法运行后,App仍然处于存活状态,也就有机会去运行所调度任务(即exit(0))。
郝萌主倾心贡献,尊重作者的劳动成果。请勿转载。
假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主。捐赠数额任意,重在心意^_^
我要捐赠: 点击捐赠
Cocos2d-X源代码下载:点我传送
怎样退出App之前唤醒还有一个App?的更多相关文章
- [经验]微信开放平台,一个APP secret可以绑定一个APP,然后再绑定一个ipad 版本APP
微信开放平台,一个APP secret可以绑定一个APP,然后再绑定一个ipad 版本APP
- iOS App 唤醒另一个App
网上也有讲这块的,感觉讲得都不是很好.而且有一些细节根本没有讲清楚.这里重写整理一下相关知识点. 主要内容 URL Scheme 是什么? 项目中关键的配置 注意事项 URL Scheme 是什么? ...
- 成都app开发:架构一个App需要学会哪些技术呢?
成都亿合科技小编为您分享: 随着APP应用的流行,越来越多的人想自己学习怎么开发APP应用,那架构一个APP需要学些什么技术呢?首先要了解App都有哪些类型,不同的类型适用于哪些需求,用户可以根据自己 ...
- iOS 一个app跳转另一个app并实现通信(如A跳到B并打开B中指定页面)
功能实现:A跳到B并打开B中指定页面 步骤: 1.首先创建两个项目(项目A,项目B),在项目B中的info.plist文件中添加URL Types,如下图所示:其中URL idenifier是项目B的 ...
- 【问题记录】uwsgi部署并启动俩个几乎一样的python flask web app,发现有一个app响应时间非常长
uwsgi在同一台linux上启动python flask web app(俩个), 发现第一个和第二个的简单性能测试差距非常大,差了将近一倍: 第一个结果: Concurrency Level: 1 ...
- 从零到一创建ionic移动app:创建第一个app
新建一个空项目,让它能够在你的虚拟机/手机上跑起来 第一步 新建工程 ionic start myApp blank 一个简单的Web应用我们已经创建完成了,接下来我们就要做一些部署到移动端之前的 ...
- IOS从一个APP跳到另一个APP
以下为跳转到大众点评APP代码如下: NSString *requestUrlString = @"dianping://shopinfo?id=1000"; NSURL *req ...
- Android在一个app中启动另一个App
Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); Compon ...
- 成都开发一个app大概好多钱?
目前,移动APP已成为很多小企业业务销售的新渠道之一,于是问题来了,一般想到要开发一个自己的app,就想问:开发一个app好多钱?去百度.360.搜狗等等平台去找相关的app开发公司咨询或者问问朋友有 ...
随机推荐
- Windows上安装DB2——从IBM官网得到90天试用版
我在下面选的90天试用版: https://www.ibm.com/developerworks/cn/downloads/im/db2/ 进入下载页面,选择Windows https://www-0 ...
- jquery不同版本导致的checkbox设置了属性,但是没有选中效果
由于本人好久不做B/S了,今天同学问我个问题才发现了jquery版本还是存在差异的,今天写的就是关于获取checkbox属性的方式(可能不应该叫属性了其实,后面就知道了). 看下面的代码截图吧 < ...
- 关于sass和less做自适应网页的区别
less 可以这么写 @r: 15rem; body{margin-top:40/@r}; 但是sass这么写会报错 sass应该这么写 $r: 15; body{margin-top:40re ...
- bzoj 4555 NTT优化子集斯特林
题目大意 读入n 求\(f(n)=\sum_{i=0}^n\sum_{j=0}^i\left\{\begin{matrix}i \\ j\end{matrix}\right\}*2^j*j!\) 分析 ...
- 阿狸的打字机(bzoj 2434)
Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P'两个字母. 经阿狸研究发现,这个打字机是这样工作的 ...
- 06深入理解C指针之---指针操作和比较
该系列文章源于<深入理解C指针>的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教. 指针作为一种特殊类型的变量,必须遵守C语言中变量先声明后使用的原则.本节内容中指针的操 ...
- 一简单c++程序之反汇编
#include<iostream> using namespace std; class point3d; class point2d; class point3d { private: ...
- Yii CActiveForm 客户端验证(enableClientValidation)和自定义验证
使用Yii的CActiveForm默认使用服务器端模型(model)的rules规则验证数据. 但这会导致无谓的请求提交,比较好的方式是为了用户体验在客户端也验证,而为了安全性,在服务器端和数据库也做 ...
- Scanner用法
先来看一个简单的例子: import java.util.*; public class ScannerTest { public static void main(String[] args){ ...
- hdu 3189(网络流+二分枚举)
Steady Cow Assignment Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6422 Accepted: ...