博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS和Android的后台知识
阅读量:3565 次
发布时间:2019-05-20

本文共 2012 字,大约阅读时间需要 6 分钟。

问题:
ios app能够在后台执行任务吗? 类似于android的service。

想搞个后台服务在那偷偷地跑
解答:
【活跃】I-深圳-T 2015/1/6 11:09:13
有个播放无声音乐得解决方案,但是会被拒绝。不要相信网上得

但是苹果在审核时可以反编译代码,然后它会果断拒绝你

所以不是那几种类型得app死心吧

首先我这个也是从别的地方看来的,我就是负责复制粘贴一下。
          一直以来安卓用户都嘲笑IOS的伪后台,苹果为什么不实现实时后台呢?既不是IOS技术上无法实现,也不是苹果傻到不考虑用户需求,今天通过对Android与IOS的后台与推送机制的简单介绍,相信大家一定会有答案。

  简单来说,iOS后台类型可以分为三种:
  1. 保存现场。按下Home键10秒内直接杀死进程,并释放内存,大多数第三方APP(非内置APP)都属于此类,APP会保存关闭时的状态以便保存数据和下次打开时恢复。
  2. iOS系统支持的“多任务”。按下Home键转入多任务状态,保留在内存中,但只能进行系统允许的动作:比如GPS,比如VoIP,比如流媒体播放等等,例如打开一个第三方音乐播放器,播放歌曲并按Home推出,音乐仍可以继续播放。
  3. 真正的桌面级别的多任务。只有Safari/Mail是,苹果嫡系大都都不是。这个级别的APP在后台没有任何限制动作。
  无限制后台动作的程序,一会在用户无察觉的情况下耗光电力,二会有安全上面的问题,所以苹果杜绝了绝大多数APP的后台动作,并且引入了推送服务器的概念。
  由于iOS不允许大多数的APP在后台实时运行,那么例如QQ这类软件是如何实现实时聊天的呢?IOS的推送(APNS,即 Apple Push Notification Service)依托iOS系统常驻进程运作,全局接管所有APP的消息推送,所以可看作是独立于应用之外,而且是设备和苹果服务器之间的通讯,而非应用的提供商服务器。例如,你的QQ好友给你发了一条消息,QQ服务器(Provider)会把这条消息转发给苹果对应的服务器(APNs)发出通知,然后再中转传送到你的设备之上。当你接收到通知,打开应用,QQ这个APP才开始从腾讯服务器接收数据,跟你之前看到通知里内容一样,但却是经由两个不同的通道而来。
  我们再来看看Android:
  当进程被切换到后台时,系统暂停进程。不消耗CPU资源,只在内存保留运行状态,并根据应用本身设置优先级:
  七个优先级: 
  前台进程。顾名思义,你当前屏幕正在显示的进程。 
  可见进程。随时需要待命的进程,例如随时需要召唤出来的输入法。 
  主要服务。系统的必须服务,例如电话。 
  次要服务。与系统关系密切的服务,例如 Gmail 的邮件推送服务。 
  后台进程。同样顾名思义,就是刚刚被你切换到后台的进程。 
  内容供应节点。没有应用实体,仅提供内容供别的应用去用的,比如日历供应节点,邮件供应节点等。 
  空进程。没有任何东西在运行的进程,有些应用在退出后,依然会在进程中驻留一个空进程,这样的作用是提高该应用下次的启动速度或记录一些历史信息。
  正常的Android应用在退出之后要不就成为后台进程,要不就成为空进程。这些进程已经暂停了运行,不占用 CPU 资源和电量。在内存不足,用户需要打开另外的应用时,就会自动清除掉,所以完全不需要清理内存。
  那些不正常的应用,就会在后台开各种主要服务和次要服务,导致用户退出后继续运行,最常见的例子就是各种占据任务栏的xx电池助手、xx手机助手……
  还有我们熟悉的微信、微博,关闭后仍然会在后台驻留后台进程,以接受推送消息,并且不断唤醒处于深度睡眠中的CPU。
  我们仍以QQ为例,QQ在后台时会保留相关进程以及服务,并且与QQ服务器实时通讯以便获得好友发送来的消息。
  iOS的聪明之处在于系统集成的推送服务接管了所有APP的推送消息,开发APP时只需遵循这一API接口即可,任何iOS设备如iPhone可以在这个统一的系统服务上获得各类APP的推送消息,占用资源小巧,并且省电。而Android上如果有100个APP需要获取通知消息,就可能需要在后台运行100个进程或者服务,这对内存以及处理器的占用是相当巨大的,而且对电池的耗费也是比iOS更为严重。
  综上所述,苹果不允许绝大多数APP实现实时的真后台,无非是从安全性、系统流畅度与耗电三方面考虑,再加上推送服务器的架构,既让用户感觉到后台应用程序的相互切换是没有断层感,又实现了资源的有效利用,可谓是聪明之举。而Android的开放给予了APP更多权限,虽说耗电、系统资源占用高于IOS,不过Android的开放也不正是他获得成功的原因吗?
Levin:一句话总结:Android的后台service是真后台,IOS的推送机制是伪后台

转载地址:http://luqrj.baihongyu.com/

你可能感兴趣的文章
CentOS安装mysql5.7的教详细流程
查看>>
项目整合微信扫码登录功能
查看>>
分布式文件系统FastDfs的搭建
查看>>
Springboot项目利用Java客户端调用FastDFS
查看>>
全文检索工具elasticsearch的安装和简单介绍
查看>>
利用Kibana学习全文检索工具elasticsearch
查看>>
SpringBoot在Test测试类或自定义类中通过@Autowired注入为null
查看>>
使用docker搭建YAPI服务
查看>>
西南科技大学OJ题 邻接表到邻接矩阵1056
查看>>
西南科技大学OJ题 有向图的出度计算1057
查看>>
西南科技大学OJ题 有向图的最大出度计算1059
查看>>
西南科技大学OJ题 带权有向图计算1063
查看>>
oracle主键自增触发器编写
查看>>
String与StringBuilder与StringBuffer三者的差别
查看>>
各种IO流之间的关系和区别
查看>>
SSM如何实现上传单图片
查看>>
SSM环境下java如何实现语音识别(百度语音识别版)
查看>>
ajax方法参数的用法和他的含义
查看>>
数据库基础技巧及用法
查看>>
实用方法:无request参数时获得当前的request的方法
查看>>