Android 应用保活思路

1.进程优先级思路

1.1 Service技巧

1.1.1 onStartCommand返回START_STICKY

1.1.2 onDestroy中startself

1.1.3 Service后台变前置,setForground(true)

1.1.4 双service(通知栏) 提高进程优先级

1.1.5 监听系统广播,如开机,锁屏,亮屏等重新启动服务

1.1.6 alarm定时器,启动服务

1.2. 守护进程/进程互拉

1.2.1 多个java进程守护互拉

1.2.2 NDK fork拉活:底层C守护进程拉起App上层/java进程

例如Git hub中 Android-Daemon-Keeper

一般结合START_STICKY属性和1像素Activity提升优先级

1.3 Activity 1像素保活

2.系统机制

2.1 广播拉活(App基本无效了)

2.2 账户同步拉活(保活稳定,时间App不可控)

系统在将APP帐户同步时,自动将未启动的APP进程拉活

2.3 JobSchedule 机制拉活

3.网络连接保活

3.1 推送拉活:GCM

3.2 推送拉活:公共的第三方push通道(个推、友盟、信鸽)

3.3 自身跟服务器通过轮询,或者长连接