Service设置成START_STICKY

  • kill 后会被重启(等待5秒左右),重传Intent,保持与重启前一样

提升service优先级

  • 在AndroidManifest.xml文件中对于intent-filter可以通过android:priority = "1000"这个属性设置最高优先级,1000是最高值,如果数字越小则优先级越低,同时适用于广播。
  • 【结论】目前看来,priority这个属性貌似只适用于broadcast,对于Service来说可能无效

提升service进程优先级

  • Android中的进程是托管的,当系统进程空间紧张的时候,会依照优先级自动进行进程的回收
  • 当service运行在低内存的环境时,将会kill掉一些存在的进程。因此进程的优先级将会很重要,可以在startForeground()使用startForeground()将service放到前台状态。这样在低内存时被kill的几率会低一些。
  • 【结论】如果在极度极度低内存的压力下,该service还是会被kill掉,并且不一定会restart()

onDestroy方法里重启service

  • service +broadcast 方式,就是当service走onDestory()的时候,发送一个自定义的广播,当收到广播的时候,重新启动service
  • 也可以直接在onDestroy()里startService
  • 【结论】当使用类似口口管家等第三方应用或是在setting里-应用-强制停止时,APP进程可能就直接被干掉了,onDestroy方法都进不来,所以还是无法保证

监听系统广播判断Service状态

  • 通过系统的一些广播,比如:手机重启、界面唤醒、应用状态改变等等监听并捕获到,然后判断我们的Service是否还存活,别忘记加权限
  • 【结论】这也能算是一种措施,不过感觉监听多了会导致Service很混乱,带来诸多不便

在JNI层,用C代码fork一个进程出来

  • 这样产生的进程,会被系统认为是两个不同的进程.但是Android5.0之后可能不行

root之后放到system/app变成系统级应用

大招: 放一个像素在前台(手机QQ)

保证service不被杀死的方法的更多相关文章

  1. 能否保证service不被杀死?

    Service设置成START_STICKY kill 后会被重启(等待5秒左右),重传Intent,保持与重启前一样 提升service优先级 在AndroidManifest.xml文件中对于in ...

  2. 【转】Android开发之如何保证Service不被杀掉(broadcast+system/app)

    Service简介 1.Service 每个Service必须在manifest中 通过<service>来声明. 可以通过contect.startservice和contect.bin ...

  3. Android 开发之如何保证Service不被杀掉(broadcast+system/app)

    序言 最近项目要实现这样一个效果:运行后,要有一个service始终保持在后台运行,不管用户作出什么操作,都要保证service不被kill,这可真是一个难题.参考了现今各种定制版的系统和安全厂商牛虻 ...

  4. Android开发之如何保证Service不被杀掉(broadcast+system/app)

    序言 最近项目要实现这样一个效果:运行后,要有一个service始终保持在后台运行,不管用户作出什么操作,都要保证service不被kill,这可真是一个难题.参考了现今各种定制版的系统和安全厂商牛虻 ...

  5. [转] Android开发之如何保证Service不被杀掉(broadcast+system/app)

    转发:原文链接http://blog.csdn.net/mad1989/article/details/22492519 序言 最近项目要实现这样一个效果:运行后,要有一个service始终保持在后台 ...

  6. Android开发之如何保证Service不被杀掉(broadcast+system/app

    Android开发之如何保证Service不被杀掉(broadcast+system/app) 序言 最近项目要实现这样一个效果:运行后,要有一个service始终保持在后台运行,不管用户作出什么操作 ...

  7. 如何保证Service在后台不被kill

    如何保证Service在后台不被kill 相信很多Android开发者在面试过程中会经常被问到“如何保证Service在后台不被kill”这个问题,总结了下一些大神给的答案. 引用知乎Android ...

  8. Android开发之如何保证Service不被杀掉(前台服务)

    序言 最近项目要实现这样一个效果:运行后,要有一个service始终保持在后台运行,不管用户作出什么操作,都要保证service不被kill.参考了现今各种定制版的系统和安全厂商牛虻软件,如何能保证自 ...

  9. android如何让service不被杀死

    1.在service中重写下面的方法,这个方法有三个返回值, START_STICKY是service被kill掉后自动重写创建 @Override     public int onStartCom ...

随机推荐

  1. Java 进阶6 异常处理的陷阱

    Java 进阶6 异常处理的陷阱 20131113 异常处理机制是 Java语言的特色之一,尤其是 Java的Checked 异常,更是体现了 Java语言的严谨性:没有完善的错误的代码根本就不会被执 ...

  2. C#使用Docx操作word文档

    C#使用Docx编写word表格 最近接手了一个小Demo,要求使用Docx,将Xml文件中的数据转换为word文档,组织数据形成表格. 写了已经一周,网络上的知识太零碎,就想自己先统计整理出来,方便 ...

  3. LeetCode OJ:Merge k Sorted Lists(归并k个链表)

    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 类 ...

  4. 【前端工具】 在 Windows 下安装 GruntJS——教程(译)

    在你安装 Grunt.js 之前你需要先安装 Node.js.对于本教程而言,我已经安装好了 node.js v0.10.0. 我将要安装 Grunt.js v0.4.1.警告:如果你已经安装了 Gr ...

  5. 今天开始写些随笔,就从Jplayer开始吧

    今天才开始用Jplayer,可能有点落伍了,但是看到网上千篇一律的使用说明,开始决定把自己的使用心得分享一下,废话不多说,开始吧. Step1: 官网上有具体的搭建顺序,URL:http://www. ...

  6. 关于TCP/IP协议

    TCP的特点: TCP是面向连接的传输层协议 TCP的传输是可靠传输 TCP是全双工的通信 TCP的连接是点对点的传输 TCP和UDP的区别 tcp是面向连接的,两台主机的通信之前必须通过三次握手建立 ...

  7. Java语言基础-运算符

    一丶逻辑运算符 1.&和&&的区别 (1).两个逻辑运算符的结果是一样的 (2).当第一个表达式为false时,&是会判断后边的表达式,而&&会产生短路 ...

  8. L169 Komodo dragons

    Komodo dragons live on a handful of islands in Indonesia, but their reputation has spread far and wi ...

  9. vs 2013远程调试

    1. 找到本机Remote Debugger/x64文件夹,将其拷贝到远程机器上 2.运行x64文件夹下的msvsmon.exe,将其设置为“无身份验证模式”,记住端口号,一会儿要用到 3.在vs中打 ...

  10. jquery.lazyload.js 图片延迟加载

    当做网页的时候,特别是整个网页展示图片较多的时候,用到图片延迟效果是很好的 使用方法也非常简单. 1.在网页任何位置(一般是在</body>前面)加上如下代码(注意<script&g ...