如何不被系统干掉进程或者服务
来源:互联网 发布:淘宝有什么推广方式 编辑:程序博客网 时间:2024/06/06 13:07
--------------------------------------------------------------------------------------------------------------------
如何实现一个不会被杀死的进程
看Android的文档知道,当进程长期不活动,或系统需要资源时,会自动清理门户,杀死一些Service,和不可见的Activity等所在的进程。
但是如果某个进程不想被杀死(如数据缓存进程,或状态监控进程,或远程服务进程),应该怎么做,才能使进程不被杀死。
add android:persistent="true" into the <application> section in your AndroidManifest.xml
切记,这个不可滥用,系统中用这个的service,app一多,整个系统就完蛋了。
目前系统中有phone等非常有限的,必须一直活着的应用在试用。
--------------------------------------------------------------------------------------------------------------------
提升service优先级的方法
Android 系统对于内存管理有自己的一套方法,为了保障系统有序稳定的运信,系统内部会自动分配,控制程序的内存使用。当系统觉得当前的资源非常有限的时候,为了保 证一些优先级高的程序能运行,就会杀掉一些他认为不重要的程序或者服务来释放内存。这样就能保证真正对用户有用的程序仍然再运行。如果你的 Service 碰上了这种情况,多半会先被杀掉。但如果你增加 Service 的优先级就能让他多留一会,我们可以用 setForeground(true) 来设置 Service 的优先级。
为什么是 foreground ? 默认启动的 Service 是被标记为 background,当前运行的 Activity 一般被标记为 foreground,也就是说你给 Service 设置了 foreground 那么他就和正在运行的 Activity 类似优先级得到了一定的提高。当让这并不能保证你得 Service 永远不被杀掉,只是提高了他的优先级。
从Android 1.5开始,一个已启动的service可以调用startForeground(int, Notification)将service置为foreground状态,调用stopForeground(boolean)将service置为 background状态。
我们会在调用startForeground(int, Notification)传入参数notification,它会在状态栏里显示正在进行的foreground service。background service不会在状态栏里显示。
在Android 1.0中,将一个service置为foreground状态:
setForeground(true);
mNM.notify(id, notification);
将一个service置为background状态:
mNM.cancel(id);
setForeground(false);
对比看出,在1.0 API中调用setForeground(boolean)只是简单的改变service的状态,用户不会有任何觉察。新API中强制将 notification和改变service状态的动作绑定起来,foreground service会在状态栏显示,而background service不会。
Remote service controller & binding
跨进程调用Service。暂时不研究。
--------------------------------------------------------------------------------------------------------------------
如何防止Android应用中的Service被系统回收? 很多朋友都在问,如何防止Android应用中的Service被系统回收?下面简单解答一下。
对于Service被系统回收,一般做法是通过提高优先级可以解决,在AndroidManifest.xml文件中对于intent-filter可以通过android:priority = "1000"这个属性设置最高优先级,1000是最高值,如果数字越小则优先级越低,同时实用于广播,推荐大家如果你的应用很重要,可以考虑通过系统常用intent action来触发。
0 0
- 如何不被系统干掉进程或者服务
- 如何干掉360杀毒的进程
- c#如何启动/干掉/查找 进程
- 如何干掉一组进程,kill group processes
- 一次干掉n个同一个服务启动的进程
- 实现一个不被干掉的Service
- VC++结束进程,干掉杀毒软件或者其他令人不爽的进程
- VC++结束进程,干掉杀毒软件或者其他令人不爽的进程
- VC++结束进程,干掉杀毒软件或者其他令人不爽的进程
- VC++结束进程,干掉杀毒软件或者其他令人不爽的进程
- android服务、进程不被销毁
- 手工干掉LSP服务
- 关于干掉EXCEL进程
- 快速干掉w3wp进程
- 如何干掉机房监控系统的学生端
- 在linux或者unix操作系统中在系统的引导的时候会开启很多服务,这些服务就叫做守护进程。守护进程是在后台运行不与任何控制终端关联,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于
- 父进程干掉子进程
- java如何监控系统进程和服务的状态
- Mysql or Mongodb LBS快速实现方案
- 用着色器编写第一个程序
- 交大安泰金融MBA:培养金融行业中的管理者
- c#中高效的excel导入sqlserver的方法
- SqlServer获得下一个自增长主键值
- 如何不被系统干掉进程或者服务
- 日记:Cannot find class [org.apache.commons.dbcp.BasicDataSource]问题
- Cookie/Session机制详解
- Ubuntu 网络配置文件生效
- win7 64位 system32和syswow64文件夹
- 说说远程团队协作的故事
- Android 调用百度 Android SDK 申请密钥方法
- android 证书
- 关于swift里面xml数据的解析设置问题