当前位置: 华文问答 > 数码

为什么安卓不采用墓碑机制?

2017-04-10数码

因为android的后台思路和ios完全不同

android提供了service用于执行后台任务,所以与此同时,android假定所有activity只要离开前台就是随时可以释放资源的

android的activity被置入后台后会调用onPause,此时程序就应该保存一些需要保存的东西了

如果内存充足,那么activity不会被销毁,下次打开时调用onResume

而内存不足时,后台activity可以被释放,仅记录intent,下次打开时使用相同的intent重建activity

而且因为栈也被保留了,activity顺序也是不会丢失的,比如a页打开b页再打开c页,恢复到c页后返回还是重建一个b页

对于遵守规范的程序来说,这样的后台管理非常高效,但不遵守规范的程序比如qq,在处理intent后没有及时的删除不需要再次处理的intent,比如分享文件后qq置于后台被释放,再次从最近任务启动qq又会发送一次文件

也就是说在android里,activity先天就是不应该有后台的,留着是内存充裕时的慈悲,但完全可以随时杀死

而后台任务,应该交给service实现,service只有在内存严重不足的时候,会有一定可能杀死

这也是android强大的根源,android可以很轻松的运行大量的持续真后台任务,比如7x24运行一个http服务端,但在ios上这很难做到

在android发布之初的时候就定下了activity,service,receiver三大组件的结构,在那个时候可以说是非常先进的