当前位置:   article > 正文

Android 保活措施,2024金三银四面试季_android 服务保活另一个服务

android 服务保活另一个服务

3.1 提高进程优先级

3.1.1 利用Activity

1像素Activy,监控手机解锁屏事件,解锁时将Activity销毁,锁屏时启动,并且要无感知,在RecentTask里移除

3.1.2 前台服务+Notification

Service 通过 startForegroundService 启动 ,低版本时可以通过特殊方式对 Notification 进行隐藏,高版本无法规避,此方案为通过需求正向解决

3.1.3 引导用户打开电池管理,允许应用后台运行

目前市面上的手机,或多或少都有对进程管理有优化,可能会有允许应用后台允许的功能,但是每款手机的入口均不相同,而且相同厂商的不同版本也会不同

具体做法,找到手机的电池管理或者系统的后台管理,针对不同的手机做文字书面的提醒,提醒用户开启此功能,暴力一点可以想办法拿到此Activity的具体类名 包名等信息,进行反射调用。

此方案一般应用不要使用,工作量巨大,而且仅仅针对提醒类应用使用,比如吃药提醒,起床闹钟,这些对保活要求非常高的应用才适合

3.2 进程死后拉活

3.2.1 监听系统静态广播

低版本时,静态广播可以唤醒应用进程,所以监听系统广播,例如开机,锁屏,解锁等可以做到,但是高版本不能通过静态广播监听系统广播了

3.2.2 监听三方静态广播

与上个方案类似,都是运用静态广播可以拉活应用为基础,只是发送方不是系统,而且三方应用。所以此方案可行,但是很不稳定,海外和国内用户群体不同,手机使用的APK也会不同,而且需要大量反编译三方应用,投成本也很高

3.2.3 利用系统Service机制拉活

Service 的 onStartCommand 返回值,当返回值为 START_STICKYSTART_REDELIVER_INTENT 时,服务会自动重启,但是 Service 在短时间内被杀死5次,则不再拉起

3.2.4 利用 JobScheduler

JobScheduler 为Android 5.0之后引入的,本质是系统定时任务,如果进程被杀,任务仍然会被执行,在7.0后 JobScheduler 添加了限制,最低间隔为15分钟。但是还是有概率出现存在进程死亡后,不触发的情况。

3.2.5 利用 AlarmManager

本质上也是通过设置定时任务,如果进程被杀,任务也仍然会被执行,此时就可以拉活进程。Doze模式会影响 AlarmManager 不被触发,此时要用setAlarmClock来设置。同样有概率出现存在进程死亡后,不触发的情况。

而且Android 9.0的谷歌原生手机,多了一个功能,就是显示手机下一个的闹钟时间是几点,如果用到了这种保活方式,用户也注意到了这个功能,那么闹钟上的时间会暴露有应用在明目张胆的保活

3.2.6 利用账号同步机制

Android 系统的账号同步机制会定期同步账号进行,该方案目的在于利用同步机制进行进程的拉活。添加账号和设置同步周期的代码即可,谷歌商店会查这种保活方案,后果不知,建议慎用

代码参考链接

3.2.7 利用Native进程拉活

利用 Linux 中的 fork 机制创建 Native 进程,在 Native 进程中监控主进程的存活,当主进程挂掉后,在 Native 进程中立即对主进程进行拉活。

感知主进程死亡:在主进程中创建一个监控文件,并且在主进程中持有文件锁。在拉活进程启动后申请文件锁将会被堵塞,一旦可以成功获取到锁,说明主进程挂掉,即可进行拉活。
拉活主进程:通过 Native 进程拉活主进程的部分代码如下,即通过 am 命令进行拉活。通过指定“–include-stopped-packages”参数来拉活主进程处于 forestop 状态的情况。
但是 Android5.0 以上手机 会依次杀死所有进程,也会将 Native 进程杀死

3.2.8 利用双进程拉活

启动两个Service A和B,处于不同进程,然后在A的 onStartCommand 中绑定 B,B也在A的 onStartCommand 中绑定A,通过 ServiceConnection 的回调 onServiceDisconnected ,当绑定断开时,说明另一个进程死亡,于是重新启动死亡的进程(Service),6.0之后保活效果也开始有限,与Natvie进程遇到的问题相似,只有在依次杀死进程的间隔中,有几率拉活

3.3 其他拉活方式

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

学习福利

【Android 详细知识点思维脑图(技能树)】

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

详细整理在GitHub可以见;

Android架构视频+BAT面试专题PDF+学习笔记​

详细整理在GitHub可以见;

Android架构视频+BAT面试专题PDF+学习笔记​

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/633783
推荐阅读
相关标签
  

闽ICP备14008679号