郝萌主倾心贡献,尊重作者的劳动成果,请勿转载。

假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^

我要捐赠: 点击捐赠

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?的更多相关文章

  1. [经验]微信开放平台,一个APP secret可以绑定一个APP,然后再绑定一个ipad 版本APP

    微信开放平台,一个APP secret可以绑定一个APP,然后再绑定一个ipad 版本APP

  2. iOS App 唤醒另一个App

    网上也有讲这块的,感觉讲得都不是很好.而且有一些细节根本没有讲清楚.这里重写整理一下相关知识点. 主要内容 URL Scheme 是什么? 项目中关键的配置 注意事项 URL Scheme 是什么? ...

  3. 成都app开发:架构一个App需要学会哪些技术呢?

    成都亿合科技小编为您分享: 随着APP应用的流行,越来越多的人想自己学习怎么开发APP应用,那架构一个APP需要学些什么技术呢?首先要了解App都有哪些类型,不同的类型适用于哪些需求,用户可以根据自己 ...

  4. iOS 一个app跳转另一个app并实现通信(如A跳到B并打开B中指定页面)

    功能实现:A跳到B并打开B中指定页面 步骤: 1.首先创建两个项目(项目A,项目B),在项目B中的info.plist文件中添加URL Types,如下图所示:其中URL idenifier是项目B的 ...

  5. 【问题记录】uwsgi部署并启动俩个几乎一样的python flask web app,发现有一个app响应时间非常长

    uwsgi在同一台linux上启动python flask web app(俩个), 发现第一个和第二个的简单性能测试差距非常大,差了将近一倍: 第一个结果: Concurrency Level: 1 ...

  6. 从零到一创建ionic移动app:创建第一个app

    新建一个空项目,让它能够在你的虚拟机/手机上跑起来 第一步 新建工程   ionic start myApp blank 一个简单的Web应用我们已经创建完成了,接下来我们就要做一些部署到移动端之前的 ...

  7. IOS从一个APP跳到另一个APP

    以下为跳转到大众点评APP代码如下: NSString *requestUrlString = @"dianping://shopinfo?id=1000"; NSURL *req ...

  8. Android在一个app中启动另一个App

    Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); Compon ...

  9. 成都开发一个app大概好多钱?

    目前,移动APP已成为很多小企业业务销售的新渠道之一,于是问题来了,一般想到要开发一个自己的app,就想问:开发一个app好多钱?去百度.360.搜狗等等平台去找相关的app开发公司咨询或者问问朋友有 ...

随机推荐

  1. node命令行开发

    node命令行开发比较出名的就是commander和yargs,以及inquirer,但是很少有文章将三个模块进行对比. 这里简单的描述一下: 1. commander直观,易上手,但是功能较弱,没有 ...

  2. 学习 WebService 第三步:一个简单的实例(SoapUI测试REST项目)

    原文地址:SOAPUI测试REST项目(六)——REST服务和WADL ↑↑↑ 原文用的SoapUI,2018-3-19时,这个软件已经更名为ReadyAPI(集成了SoapUI),因此下文中我重新截 ...

  3. Java-二叉树-插入、删除、遍历

    二叉树的具体特性和细节知识点,自行百度,直接上代码. 节点:节点内容.左子孩子.右子孩子.父亲 class Node { private int data; private Node leftChil ...

  4. ado:SqlDataAdapter,dataset 与SqlDataReader的用法一

    原文发布时间为:2008-08-01 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...

  5. JAVA特性面试题:

    1.简要介绍java程序的健壮性. 答:JAVA程序会在编译和运行的时候自动的检测可能出现的错误,而且它是一种强类型语言,对于类型的检查很严格,而且它的垃圾回收机制也有效的避免了内存的泄漏. 2.为什 ...

  6. AC日记——猴子 cogs 2043

    2043. 猴子 ★★   输入文件:monkeya.in   输出文件:monkeya.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 有n只猴子,第一只尾巴挂在树上 ...

  7. CocoaPods | iOS详细使用说明

    一:介绍 在iOS开发中,经常会使用到第三方库,[CocoaPods](https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库. 下面就和大家 ...

  8. Babel6.x的安装过程

    1.首先安装babel-cli(用于在终端使用babel) npm install -g babel-cli 2.然后安装babel-preset-es2015插件 npm install --sav ...

  9. HDU 4746 Mophues【莫比乌斯反演】

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4746 题意: 1≤x,y≤n , 求gcd(x,y)分解后质因数个数小于等k的(x,y)的对数. 分 ...

  10. 域名缓存侦测(DNS Cache Snooping)技术

    域名缓存侦测(DNS Cache Snooping)技术 在企业网络中,通常都会配置DNS服务器,为网络内的主机提供域名解析服务.这些DNS不仅解析自己的私有域名,还会用递归方式,请求公网的DNS解析 ...