Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2019-07-16:Service如何进行保活? #98

Open
Moosphan opened this issue Jul 16, 2019 · 11 comments
Open

2019-07-16:Service如何进行保活? #98

Moosphan opened this issue Jul 16, 2019 · 11 comments

Comments

@Moosphan
Copy link
Owner

No description provided.

@whatshappen
Copy link

保活不了,死球了

@zhoulesin
Copy link

做保活的都死球了,比如我

@yangfanggang
Copy link

评论我笑出猪叫

百度了下 思路无非是两种
1.提升service进程优先级
2.在service的生命周期内加以处理(重新创建或重新启动)

@fenggeZhang
Copy link

利用系统广播拉活
利用系统service拉活
利用Native进程拉活<Android5.0以后失效> fork进行监控主进程,利用native拉活
利用JobScheduler机制拉活<Android5.0以后>
利用账号同步机制拉活

@18361237136
Copy link

  1. 开启一个像素的Activity进行保活
  2. 前台服务
  3. 用系统广播进行相互唤醒
  4. JobScheduler

@IT666
Copy link

IT666 commented Sep 23, 2019

1.设置Service优先级,setForground(true)
2.onStartCommand()方法返回START_STICKY
3.设置为系统级应用
4.在onDestory()方法中重新启动Service
5.开启单独的进程

@JarvisGG
Copy link

JarvisGG commented Mar 2, 2020

评论我笑出猪叫

百度了下 思路无非是两种
1.提升service进程优先级
2.在service的生命周期内加以处理(重新创建或重新启动)

第二种保证不了系统回收

@zizikoth
Copy link

诱导用户添加白名单
其他的基本都不现实,比如我手机上除了微信和网易云音乐加入白名单,其他(京东,淘宝,美团等)一键清理之后全部死翘翘

@LillteZheng
Copy link

保活基本实现不了了,pass

@mlinqirong
Copy link

现在系统只要一键清理掉应用 服务也会被清掉而且无法自启动 除非加入白名单

@senlinxuefeng
Copy link

1:跟各大系统厂商建立合作关系,把App加入系统内存清理的白名单

2:白色保活

用startForeground()启动前台服务,这是官方提供的后台保活方式,不足的就是通知栏会常驻一条通知,像360的状态栏。

3:灰色保活

开启前台Service,开启另一个Service将通知栏移除,其oom_adj值还是没变的,这样用户就察觉不到app在后台保活。
用广播唤醒自启,像开机广播、网络切换广播等,但在国产Rom中几乎都被堵上了。
多个app关联唤醒,就像BAT的全家桶,打开一个App的时候会启动、唤醒其他App,包括一些第三方推送也是,对于大多数单独app,比较难以实现。

4:黑色保活

1 像素activity保活方案,监听息屏事件,在息屏时启动个一像素的activity,提升自身优先级;
Service中循环播放一段无声音频,伪装音乐app,播放音乐中的app优先级还是蛮高的,也能很大程度保活效果较好,但耗电量高,谨慎使用;
双进程守护,这在国产rom中几乎没用,因为划掉app会把所有相关进程都杀死。
3、实现过程:

1)、用startForeground()启动前台服务

前台Service,使用startForeground这个Service尽量要轻,不要占用过多的系统资源,否则系统在资源紧张时,照样会将其杀死。

DaemonService.java

可以参考下面的
Android实现进程保活方案解析

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests