概要

Service:是一个后台服务,专门用来处理常驻后台的工作的组件,也是android四大组件之一。大家在工作当中往往有的时候需求就是需要一个常驻后台的service,比如说,即时通讯、在后台定时获取位置等等。但是这些往往是google工程师不想看到的,没有办法,国内都是这么玩,你要是在后台轻易被杀死了,人家就会骂你是你的app做的不行。做一个良民是不行的。

方法

那么我们怎么做才能实现service常驻后台呢?这也是很多android程序员所苦恼的,比如说我们辛辛苦苦写的一个服务,一个360就把你给干掉了,但是我们“敬爱”的产品就会说了,你看人家微信,你看人家qq怎么就没事。无语啊!!!怎么办,怎么办,天都黑了。那么这里给大家讲的就是之所以会被杀死的原因是什么,那就是我们的app优先级某有别人的高。那么我们现在对进程的优先级做下排序。

一、优先级

进程的重要性优先级:(越往后的就越容易被系统杀死)
1.前台进程;Foreground process
1)用户正在交互的Activity(onResume())
2)当某个Service绑定正在交互的Activity。
3)被主动调用为前台Service(startForeground())
4)组件正在执行生命周期的回调(onCreate()/onStart()/onDestroy())
5)BroadcastReceiver 正在执行onReceive();
2.可见进程;Visible process
1)我们的Activity处在onPause()(没有进入onStop())
2)绑定到前台Activity的Service。
3.服务进程;Service process
简单的startService()启动。
4.后台进程;Background process
对用户没有直接影响的进程----Activity出于onStop()的时候。
android:process=":xxx"
5.空进程; Empty process
不含有任何的活动的组件。(android设计的,为了第二次启动更快,采取的一个权衡)

二、如何提升进程的优先级(尽量做到不轻易被系统杀死)

1.可以采取在锁屏的时候启动一个1个像素的Activity,当用户解锁以后将这个Activity结束掉(顺便同时把自己的核心服务再开启一次)。被用户发现了就不好了。
背景:当手机锁屏的时候什么都干死了,为了省电。
锁屏界面在上面盖住了。
监听锁屏广播,锁了---启动这个Activity。
监听锁屏的,  开启---结束掉这个Activity。
要监听锁屏的广播---动态注册。
2.app运营商和手机厂商可能有合作关系---白名单。
3.双进程守护---可以防止单个进程杀死,同时可以防止第三方的360清理掉。一个进程被杀死,另外一个进程又被他启动。相互监听启动。
    A<--->B   杀进程是一个一个杀的。本质是和杀进程时间赛跑。
4.JobScheduler 5.0以下没有
把任务加到系统调度队列中,当到达任务窗口期的时候就会执行,我们可以在这个任务里面启动我们的进程。这样可以做到将近杀不死的进程。
5.监听QQ,微信,系统应用,友盟,小米推送等等的广播,然后把自己启动了。
6.利用账号同步机制唤醒我们的进程   AccountManager
7.NDK来解决,Native进程来实现双进程守护。
总结:要根据自己的需要来使用。

service常驻后台相关推荐

  1. Android MarsDaemon实现进程及Service常驻

    前段时间.就讨论过关于怎样让Service常驻于内存而不被杀死,最后的结论就是使用JNI实现守护进程,可是不得不说的是,在没有改动系统源代码的情况下,想真正实现杀不死服务,是一件非常难的事情.眼下除了 ...

  2. 让程序常驻后台运行的原理和方法

    为什么80%的码农都做不了架构师?>>>    linux中进程组织结构为session包含一个前台进程组及一个或多个后台进程组,一个进程组包含多个进程. 一个session可能会有 ...

  3. 用JQuery中的Ajax方法获取web service等后台程序中的方法

    用JQuery中的Ajax方法获取web service等后台程序中的方法 1.准备需要被前台html页面调用的web Service,这里我们就用ws来代替了,代码如下: using System; ...

  4. android 充电模式deamon_Android MarsDaemon实现进程及Service常驻

    前段时间.就讨论过关于怎样让Service常驻于内存而不被杀死,最后的结论就是使用JNI实现守护进程,可是不得不说的是,在没有改动系统源代码的情况下,想真正实现杀不死服务,是一件非常难的事情.眼下除了 ...

  5. iOS 通过定位获取常驻后台

    我们知道ios 的应用,大部分都是进入后台,就不会执行任何操作,但是 ,很多时候我们希望程序进入后台,也能执行一些检测操作,比如说,应用进入后台,我们仍然可以实时去获取当前的位置信息.下面我们来了解下 ...

  6. java语言写常驻服务_让程序常驻后台运行的原理和方法

    linux中进程组织结构为session包含一个前台进程组及一个或多个后台进程组,一个进程组包含多个进程. 一个session可能会有一个session首进程,而一个session首进程可能会有一个控 ...

  7. Android 通过Service 实现后台GPS定位

    前言 做移动GIS开发经常会使用到定位功能,很多时候通过代码里的手写定位代码在Activity中就实现了.虽然比较简单,但是也会有一些问题,比如定位慢,代码杂乱.一直都知道可以通过Service进行后 ...

  8. 网易云视频播放器不使用Service实现后台播放

    最近在一家公司实习,要求我在Android上找到播放器实现后台播放的方法,通过研究网易云视频中的播放器,我找到了其中的方法,虽然我觉得网易的方法有点取巧. 1.  问题描述 网易云视频播放器在播放过程 ...

  9. 使用Android的Service实现后台定时检测并重启应用

    Android的Service使用一例,后台任务定时检测并定时重启应用. Service简述: Service(服务)是一个一种可以在后台执行长时间运行操作而没有用户界面的应用组件.服务可由其他应用组 ...

  10. android服务常驻内存,android service常驻内存的一点思考

    我们总是不想自己的Android service被系统清理,以前时候大家最常用的办法就是在JNI里面fork出子进程,然后监视 service进程状态,被系统杀死了就重启它. 我分别在android4 ...

最新文章

  1. oracle非归档模式下如何备份,Oracle之RMAN数据库在非归档模式下的备份和恢复
  2. java前台传多个id用什么接收_前端js传多个id 到java后台的处理方式
  3. python傅里叶变换例子
  4. Linux下的find的使用方法
  5. Spring基于配置方式实现自定义条件装配
  6. sqlserver实验心得体会_sqlserver 关于DBCC CHECKDB的总结
  7. BZOJ 2440 完全平方数(莫比乌斯-容斥原理)
  8. Intent 的用法
  9. java 柱状图 宽度_Java实现 LeetCode 84 柱状图中最大得矩形
  10. rip协议中周期性广播路由信息的报文_距离矢量路由协议-RIP
  11. rabbitmq实现秒杀中订单流量削峰
  12. 微型计算机虚拟内存器件,内外存储器与缓存内存虚拟内存.ppt
  13. Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(2) 自己封装的Calendar接口
  14. C/C++实现刮刮乐-刮奖区,刮出一套房
  15. 神舟战神调节风扇热键_神舟GX9电脑热键驱动
  16. 小组取什么名字好_有创意的小组名有哪些
  17. 2020款苹果iPad Pro将搭载3D感应后置摄像头
  18. 关于如何用vscode使用Competitive Programming Helper (cph)插件以及网页插件competitive-companion实现高效刷题
  19. 学习pandas,应该选择哪本书进行学习?
  20. Selenium原理以及Python从零实现

热门文章

  1. Android 抽屉用法
  2. windows 安装应用时 弹出 another installation inprogress.you must complete that installation before continu
  3. html用户名和用户密码验证,js实现用户名和密码的校验
  4. 前端性能优化(三)——浏览器九大缓存方法
  5. 学计算机辅助制造的感受,计算机辅助制造CAM介绍
  6. 作为互联网+项目负责人的一些感悟
  7. Unity-动画系统-Animat
  8. 论文阅读——Efficient and Robust Feature Selection via Joint L2,1-Norms Minimization
  9. 《创业时代》原型:为什么Talkbox、子弹短信都失败了?
  10. 计算机桌面上的微信图标不显示不出来的,电脑微信图标任务栏不见了怎么办