android service 防杀_Android 进程有什么防止被任务管理器查杀的解决方法?

本文详细介绍了Android系统中进程的五种优先级,从高到低分别是:前台进程、可视进程、服务进程、后台进程和空进程。当内存不足时,系统会按优先级顺序杀死进程。提高进程优先级可以通过startForeground()方法,或者在AndroidManifest.xml中设置android:persistent属性为true,使进程成为常驻内存进程,降低被杀死的概率。

当系统的内存不足时, android系统将根据进程优先级选择杀死一些不太重要的进程. 进程优先级从高到低分别为:

1. 前台进程. 以下的进程为前台进程:

a. 进程中包含处于前台的正与用户交互的activity;

b. 进程中包含与前台activity绑定的service;

c. 进程中包含调用了startForeground()方法的service;

d. 进程中包含正在执行onCreate(), onStart(), 或onDestroy()方法的service;

e. 进程中包含正在执行onReceive()方法的BroadcastReceiver.

系统中前台进程的数量很少, 前台进程几乎不会被杀死. 只有当内存低到无法保证所有的前台进程同时运行时才会选择杀死某个前台进程.

2. 可视进程. 以下进程为可视进程:

a. 进程中包含未处于前台但仍然可见的activity(调用了activity的onPause()方法, 但没有调用onStop()方法). 典型的情况是运行activity时弹出对话框, 此时的activity虽然不是前台activity, 但其仍然可见.

b. 进程中包含与可见activity绑定的service.

可视进程不会被系统杀死, 除非为了保证前台进程的运行而不得已为之.

3. 服务进程. 进程中包含已启动的service.

4. 后台进程. 进程中包含不可见的activity(onStop()方法调用后的activity). 后台进程不会直接影响用户体验, 为了保证前台进程/可视进程/服务进程的运行, 系统随时都有可能杀死一个后台进程. 一个正确的实现了生命周期方法的activity处于后台时被系统杀死, 可以在用户重新启动它时恢复之前的运行状态.

5. 空进程. 不包含任何处于活动状态的进程是一个空进程. 系统经常杀死空进程, 这不会造成任何影响. 空进程存在的唯一理由是为了缓存一些启动数据, 以便下次可以更快的启动.

所以,据上所述,对应解决方法如下:

1、提高进程优先级

startForeground(1, new Notification());

2、找到这个进程对应的 AndroidMannifest.xml 文件,在其中添加属性android:persistent="true" ,这样可以将该进程设置为常驻内存进程,就可以降低被Kill的概率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值