美文网首页网络通信
Service运行在后台

Service运行在后台

作者: shuixingge | 来源:发表于2016-04-24 22:38 被阅读121次

简书参考资料1
知乎参考资料2
博客参考资料3
博客参考资料4
进程回收机制

App在退到后台时系统并不会真正的kill掉这个进程,而是将其缓存起来。打开的应用越多,后台缓存的进程也越多。在系统内存不足的情况下,系统开始依据自身的一套进程回收机制来判断要kill掉哪些进程,以腾出内存来供给需要的app。这套杀进程回收内存的机制就叫 Low Memory Killer

进程优先级

Paste_Image.png

前台进程:拥有与用户正在交互的Activity或者持有一个绑定到前台 Activity 的服务 ;系统内存不足,前台进程最后被杀掉。
可见进程:可以是处于暂停状态的Activity或者绑定在其上的Service,即被用户可见,但是由于失去了焦点,而不能与用户交互。
服务进程:如果不属于以上两种状态,其中运行着通过StartService启动的服务(started service),那么它被看作是一个服务进程。
后台进程:运行着调用了onStop的而停止的程序,这些进程会保留一段时间,直到更高优先级进程需要内存的时候才被回收。
空进程:不包含任何应用程序组件的进程,空进程是最低优先级的。

这些优先级是在进程的级别上,不是组件级别上

利用不同的App进程使用广播来进行相互唤醒。

Service设置成START_STICKY,kill 后会被重启(等待5秒左右),重传Intent,保持与重启前一样

通过 startForeground将进程设置为前台进程,做前台服务,优先级和前台应用一个级别​,除非在系统内存非常缺,否则此进程不会被 kill

双进程Service:让2个进程互相保护,其中一个Service被清理后,另外没被清理的进程可以立即重启进程

Android系统中当前进程(Process)fork出来的子进程,被系统认为是两个不同的进程。当父进程被杀死的时候,子进程仍然可以存活,并不受影响。鉴于目前提到的在Android-Service层做双守护都会失败,我们可以fork出c进程,多进程守护。死循环在那检查是否还存在;守护进程做的事情就是循环检查目标进程是否存在,不存在则启动它。

相关文章

  • Android学习小记-Service

    Service:实现程序在应用后台运行 创建Service文件 在Service中重写 onStartComman...

  • Service

    Service介绍 运行于后台,没有前台界面的组件,用于运行需要在后台运行的代码。 在Activity中开启线程下...

  • 20170104第一行代码第九章Service

    一、Service介绍 Service实现后台运行,但是并不会自动开启线程,所有的Service代码都是默认运行在...

  • android之getSystemService介绍

    android service android的后台运行在很多service,它们在系统启动时被SystemSer...

  • 安卓Service/IntentService/广播的应用(附带

    一. Service: Service主要有两个应用场景:后台运行和跨进程访问。Service可以在后台执行长时间...

  • Android Service服务

    Service Service介绍 Service 服务 是四大组件之一 和Activity非常相似 后台运行 没...

  • IntentService 源码解析

    Android系统中的Service一般是在后台长时间运行的,有时候我们需要一种轻量级的Service在后台运行结...

  • Android开发笔记五

    一、Service学习 Service Service(服务)是一个没有用户界面的在后台运行执行耗时操作...

  • Service设置startForeground不被杀死

    首先Service是运行于后台进程的,这个跟运行的线程没有关系,Service是运行于UI主线程的。 先看看进程的...

  • Service 详解

    一、Service简介 Service是Android程序中四大基础组件之一,是在后台运行的组件。 Service...

网友评论

    本文标题:Service运行在后台

    本文链接:https://www.haomeiwen.com/subject/wavfrttx.html