手机应用为什么明明已经退出,还会收到推送的消息?
是像电脑一样,应用退出后还会有某些残留程序未关闭吗?该如何完全关闭残留程序?
对于andriod用户来说经常有这种困扰,掏出你的手机,进入应用程序管理,杀掉所有应用,然后去泡杯茶,回来再看看你的手机你会神奇地发现,刚刚杀掉的应用很多都自己复活了,一个个的还活蹦乱跳的,时不时给你推送几条消息。其实andriod应用有几种复活方式:
监听系统事件:Android系统有一套广播机制,当系统发生了某件事的时候,它会通知给需要知道这件事情的所有应用。这套机制对于良心应用来说,就是可以根据系统当前的状态,给用户带来更好体验。但是,对于某些别有用心的应用,它就利用这套机制,钻个小空子了,明明用户已经退出它了,它仍旧把自己唤醒,静静地躺在后台。
守护进程唤醒:大部分复活的应用都只学会了第一式,还有另外一种方式就是:很多应用在启动后,还会创建一个守护进程,就像是最开始的恋爱形式一样,中间需要有一个媒人的存在,时不时的问问你们相处的怎么样了,有没有什么矛盾,要是出现了什么问题,他就给你们解决和协调,挽回你们这段感情。
大部分的复活差不多都是采用的第一种形式,不过不同的消息推送技术还是有所不同,其中关于消息推送做得比较好的有友盟推送,我们app现在就是用的友盟推送,他的稳定性和到达率还是很不错的。
在iOS中,你收到的推送消息和应用程序是否关闭没有关系。如果不想收到应用的推送消息,只需要去设置中的通知中,找到这个应用,取消接受他的通知就可以了。
在iOS中的通知系统是苹果的服务器发送给iOS设备的,如果你第一次打开应用程序时同意接受通知,那么苹果就会在服务器上注册这台设备的通知ID,并且应用的服务器也会收到通知ID。当应用要发通知时,是应用的服务器发消息给苹果服务器,然后苹果服务器发消息给设备,跟你的应用是否打开没关系。
iOS另一种通知是本地通知,也就是不需要服务器发消息,而是本地根据应用设定好的条件给你发送通知,最常见就是当你几天没打开应用,给你一个通知说什么想你了让你打开之类的。
在Android中,也有类似iOS的推送系统。但是Android应用的权限比iOS大很多,确实存在有些流氓应用你根本就关不掉他的情况,只能用一些第三方反流氓应用去对付流氓应用。但是,能干的过流氓应用的反流氓应用其实更流氓。。。所谓“流氓会武术,谁也挡不住”。。。
from:https://www.zhihu.com/question/20366585
from:https://www.zhihu.com/question/24938934/answer/79382621