苹果手机的ios系统在不用的时候是否需要关闭后台的应用程序

苹果手机的ios系统在不用的时候是否需要关闭后台的应用程序,第1张

答案:不必关

前提:手机未越狱

原因:

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分钟后,内存被释放,再次点击应用的时候,是完全重新启动吗我的一等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10083652.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存