
答案:不必关
前提:手机未越狱
原因:
1 IOS独特的任务管理机制。当应用程序不在前台运行时,除了GPS服务、音频播放服务和VOIP服务以外,其他的应用(支持所谓的后台执行的程序)在10分钟后都是被系统挂起的,从技术上来说,被挂起的意思等同于不执行,只是数据驻留在内存而已。
2 IOS的内存管理机制。当新的应用被执行时,需要申请的内存空间不足,系统会自动结束部分后台挂起的应用,从而释放系统资源。
3 多任务假象。例如QQ,看起来貌似是在后台运行,其实不是。你能收到消息提示只是系统推送服务,无论你的应用程序是否在运行,IOS都会在后台维护这个服务以实现假的多任务,并且所有的应用程序都会共用这一服务通道。
4 根据我个人在越狱后的IOS上的开发经验。部分服务,例如网络服务,定时器服务等,会在系统待机(按下Power键黑屏后)状态下被系统中止,其中定时器服务在IOS5x中会继续执行,但网络服务是一定在经过一段特定的时间后会断开。也就是说系统在电量的保护上已经做了很大程度的优化,是系统级的,应用程序这个级别无法逾越这个鸿沟。这也正是我说要在非越狱平台的原因。因为一旦手机越狱后,可以通过非官方途径安装一些后台进程(没有应用程序图标)、系统插件等,这些东西是看不见的,但却可以在后台消耗你的电量。
总的来说,双击HOME键出现的最近使用的应用程序菜单中的应用,是可以不用手动去关闭的,这些应用程序都和非越狱版的IOS一样,受系统的约束。
根据用户需求,在执行任务时因外部因素程序退到后台;一段时间之后回来能继续在当前页面 *** 作。
@property ( nonatomic , assign ) BOOL goingToQuit;
//自定义停留时间
#define KILL_IN_BACKGROUND_AFTER_SECS3600
// APP进入后台
- ( void )applicationDidEnterBackground:(UIApplication )application
{
[ self comeToBackgroundMode];
//环信调用applicationDidEnterBackground 后会导致应用回到后台就被杀死
//[[EMClient sharedClient] applicationDidEnterBackground:application];
}
/
退出后台保证应用短时间内不被杀死
/
-( void )comeToBackgroundMode{
self goingToQuit = YES ;
UIApplication app = [UIApplication sharedApplication];
UIBackgroundTaskIdentifier __block bgTask;//设置后台任务ID
//开始申请一些额外的时间来处理任务,延迟系统挂起你的应用
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
//退到后台后30秒进入
[app endBackgroundTask:bgTask];//告诉系统,任务完成了,可以挂起APP了
bgTask =UIBackgroundTaskInvalid;
}];
//过期处理
if (UIBackgroundTaskInvalid != bgTask) {
// Start the long-running task to kill app after some secs and return immediately
dispatch_after( dispatch_time(DISPATCH_TIME_NOW, KILL_IN_BACKGROUND_AFTER_SECS 1e09),
dispatch_get_main_queue(), ^{
if ( self goingToQuit){
self goingToQuit= NO ;
exit(0);
}
[app endBackgroundTask: bgTask];
});
}
}
前面回答的都不是做iOS开发的。
这是由iOS系统管理决定的,但APP退出在后台后,只有10秒的持续运行时间,然后暂停。但该APP还在内存中,当出现内存警告,也就是别的APP要运行,而此时内存又不足的情况下,系统会回收停在后台APP所占用的内存。如果出现这种情况,那么你再次打开你的APP,就会重新启动。
不知道你是为什么要让APP在后台还要继续运行,如果非得这样,那可以使用多线程技术中的gcd,可以让APP退出后继续运行很长一段时间(大概10分钟)
iOS APP类型:
1 保存现场。按下Home键10秒内直接杀死进程,并释放内存。
2 iOS支持的“多任务”。按下Home键转入多任务状态,保留在内存中,但只能系统允许的动作:比如GPS,比如VoIP,比如音乐等等。
3 真正的桌面级别的多任务。只有Safari/Mail是,苹果嫡系大都都不是。这个级别的app在后台没有任何限制动作。
无限制动作的程序,一会在用户无察觉的情况下耗光电力,二会有安全上面的问题(那些在后台依旧默默发送你的个人消息程序)
顺便提一句,后两种占用内存的app,也会在任意时间从内存中被砍掉,取决于你是否动用了其它app而导致内存不足。
真正不会被砍掉的后台,只有苹果那个通知系统。
会访问。苹果手机可以访问后台。和其他智能手机一样,苹果手机上的应用程序可以在后台运行,以便在不使用它们时继续处理任务或接收通知。根据iOS系统的特点,当您退出一个应用程序并转到另一个应用程序时,该应用程序会进入挂起状态,这意味着,虽然该应用程序不再处于活动状态,但是它仍然可以在后台执行某些任务,并接收推送通知。
1在xxx-infoplist文件中, 新建一行 Required background modes , 加入下面两项。
App shares data using CoreBluetooth 和 App communicates using CoreBluetooth
如图所示:
加入这个项后, 你会发现, 当应用进入后台后, 蓝牙还是保持连接的。
但是, 进入后台后, 虽然应用还挂着, 能够正常接收数据。但是, 来数据了, 如果需要我们实时响应, 那就要用到推送了。
也就是, 当数据来的时候, d出一个提示框, 提示用户来数据了。
2 设置本地推送
这里的方法写在AppDelegatem中。 receiveData对应你接收到数据的响应函数。
以上就是关于苹果手机的ios系统在不用的时候是否需要关闭后台的应用程序全部的内容,包括:苹果手机的ios系统在不用的时候是否需要关闭后台的应用程序、IOS 保持程序在后台一定时间运行、ios开发 如果一个应用在后台10分钟后,内存被释放,再次点击应用的时候,是完全重新启动吗我的一等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)