Jasper-1024 / DeepSleep

GNU General Public License v3.0
62 stars 4 forks source link

增加禁止JobScheduler的功能 #9

Open RichardLuo0 opened 1 year ago

RichardLuo0 commented 1 year ago

根据我的观察,这个貌似是系统唤醒应用去干事情,现有的功能应该是无法限制(目前我不清楚那个“同步”是什么东西)。 不过android的确会自己安排什么时候唤醒,理论上耗电应该不大,可能也没必要去刻意禁止他。也许可以考虑增加一个选项,手动设定安排work的间隔(拉长他本来要设定的时间或者条件)。 另外就是,很多应用会使用jetpack里的WorkManager,他底层用的就是JobScheduler(某个android api以上),但是,在类原生系统上,这个东西离谱的是他居然在force stop以后会重启,我没找到具体重启的代码,但是有一段注释写了,而且也符合我的观察(在强制停止微信4 5小时后他的确做到自己重启了),源码: ForceStopRunnable.java,这个基本就是重启后检测了一下是否是force stop,是的话就重新安排work(因为force stop会取消所有job。。。没错,Google就是这么自相矛盾),我觉得这个行为非常奇怪,不符合force stop的含义,目前我发现的是如果hook ForceStopRunnable::run为空似乎可以解决,希望也能增加这个功能

Jasper-1024 commented 1 year ago

这个 api 算是 frameworks 级别的了... deepsleep 是 hook 具体应用而不是 系统... JobScheduler 在应用 force stop 后还能启动,符合 api 的描述,如果要干掉这样的启动路径, 最好的方式是干掉应用注册的那一段...