Android进程保活方法
来源:互联网 发布:linux编译工具链 编辑:程序博客网 时间:2024/03/29 04:19
Android进程保活方法
当前进程保活分为三种方式:
1.黑色保活:通过广播相互唤醒。
2.白色保活:启动前台service
3.灰色保活:利用系统漏洞启动前台service
黑色保活:
黑色保活这种方式是最为简单的方法,通过系统广播什么拍照,启动,网络连接等等广播,或者其他app的广播进行唤醒。
白色保活:
通过启动前台Service来保持应用的一直运行。
我们看一下如何让一个service成为前台service,一般情况下我们知道service运行在后台,并且优先级也不高,当内存不够时service就会被回收掉,因此我们要想service一直保持运行,就考虑使用前台service。
前台service与普通service区别在于前台service一直有一个运行图标显示在系统通知栏。类似Notification.
public ForeService extends Service{ public void onCreate(){ super.onCreate(); //创建NOtification对象 Notification notificatin=new Notification(R.drawable.icon,"前台service",System.currentTImeMillis()); Intent intent=new Intent(this,MainActivity.class); PendingIntent pending=PendingIntent.getActivity(this,0,intent,0); //为通知设置布局和数据 notification.setLastestEventInfo(this,"","",pending); //将service设置为前台service startForeground(1,notification); }}
灰色保活:
利用系统漏洞设置前台service对app进行保活,相对白色保活而言,这种方式更为隐蔽。
方式按系统分为:
API<18 : 启动前台service,直接传入一个 new Notificaation()
API>18 : 同时启动两个id相同的前台service,然后将后启动的service进行stop操作。
public class GrayService extends Service {private final static int GRAY_SERVICE_ID = 1001;@Overridepublic int onStartCommand(Intent intent, int flags, int startId) { if (Build.VERSION.SDK_INT < 18) { startForeground(GRAY_SERVICE_ID, new Notification());//API < 18 ,此方法能有效隐藏Notification上的图标 } else { Intent innerIntent = new Intent(this, GrayInnerService.class); startService(innerIntent); startForeground(GRAY_SERVICE_ID, new Notification()); } return super.onStartCommand(intent, flags, startId);}....../** * 给 API >= 18 的平台上用的灰色保活手段 */public static class GrayInnerService extends Service { @Override public int onStartCommand(Intent intent, int flags, int startId) { startForeground(GRAY_SERVICE_ID, new Notification()); stopForeground(true); stopSelf(); return super.onStartCommand(intent, flags, startId); }}
1 0
- Android进程保活方法
- Android进程保活方法
- 进程保活方法
- Android进程保活
- Android 进程保活
- Android进程保活
- Android进程保活
- Android 进程保活
- Android进程保活
- Android 进程保活
- Android -- 进程保活
- Android 进程保活
- Android进程保活
- Android进程保活
- android 进程 保活
- Android进程保活
- Android进程保活
- android 进程保活
- A. Link/Cut Tree
- 黑客动画吧-黑客闯关之古墓探秘攻略
- 深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
- 数组
- 机器学习中的各种相似度度量
- Android进程保活方法
- 二维数组和三维数组
- 每个程序员都需要学习 JavaScript 的7个理由
- 几款常见的数学教学软件
- 键盘事件event.keyCode ,event.which ,event.charCode
- 观察者模式抽取的工具类
- 【小镇的技术天梯】lanmp服务器集群搭建(6)rsync+inotify同步主备nfs
- php 发送get,post 请求
- [欧拉函数] BZOJ 2226 [Spoj 5971] LCMSum