2024年Android最全Android应用保活方案的另类出路,让你应用长生不老,2024年最新京东面经java

尾声

最后,我再重复一次,如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

最后想要拿高薪实现技术提升薪水得到质的飞跃。最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以为了大家能够顺利进阶中高级、架构师,我特地为大家准备了一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。

当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的。

进阶学习视频

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

然后运行项目,报了权限错误:

我们在AndroidManifest.xml 中添加这个权限即可,然后运行可惜没什么效果。所以就换个思路,既然要开启应用的自启动权限,对于小米手机我们知道在小米安全应用中管理的,我们同样去**/system/priv-app/** 这个目录下找到这个应用:

页面如下:

然后弄出来apk之后用Jadx打开apk查看,同时我们可以用adb shell dumpsys activity top 命令查看当前页面的activity信息:

然后去搜索这个类,直接看到那个开启的开关逻辑代码:

逐个排查找到这个类中:

继续往里面看:

这里看到了重要信息就是写入CP了,有了uri信息,看到这里写入三个字段信息,查看他的uri信息:

到这里就简单了,我们在应用中直接利用uri信息写入值,当然需要把我们的应用自启动开启:

然后运行看效果:

有报错信息,提示缺少权限我们添加即可,运行看看效果:

三、结果出乎意料

到这里我们就操作成功了,这里就结束了吗?
显然不是。因为这里有一个很大的问题,细心的同学发现了,如果这个真的不用root权限就这么简单的开启那小米系统也太不安全了吧,但是我手中的这台小米4的确是可以的,但是用了其他的小米手机发现确还是提示权限不足,其实用我们的脚指头想一想也是正常的,这里肯定有问题,如果这一点都可以做到的话,那么小米系统真的是太不安全了,那为什么我的手机可以呢?因为我的手机当时自己刷了网上第三方的小米ROM,这个ROM应该是被改过了,只要是有权限验证的地方都可以免root过掉。那么这里我就被我的手机耍了一次,而你们却被我耍了一次。

四、保活的另类出路

我们知道现在很多应用都想开启自启动权限,这样应用就可以长生不老了,不过通过这一次分析小米系统源码可以发现只要有了自启动权限之后应用首先是不会杀死,然后也可以重启,真的是完完全全的长生不老了,那么其实权限这个事情我们肯定是做不了了。

所以我们可以想其他的方案,比如我们可以引导用户去开启 ,这个就要看产品怎么去很好的引导用户了,比如有一个提示说:开启自启动可以更好的使用本应用此类消息。

这样有了自启动权限之后可以做很多事情了,但是不是所有的用户都愿意去开启的,那么我们怎么让我们的应用长生不老呢,难道真的没办法了吗?办法其实还是有的,我们可以通过上面分析系统源码的时候看到:

当我们点击系统菜单键出现系统多任务界面,然后点击清空内存,其实系统这时候会获取当前正在运行的程序,并且获取他们的页面截图用于展示,而对于正在当前运行的程序是不会强制杀死的,也就是TopActivity 的程序是不会杀死的。

那么我们是否可以利用这一点来做呢?首先我们可以监听系统的多任务菜单键,这个就是动态监听系统一个广播即可,然后我们监听到之后就立马启动我们自己的一个保活Activity这里就叫做一像素Activity ,但是这个Activity需要具备以下三点:

**第一点:**因为一像素对于肉眼来看几乎可以忽略,所以需要在这个Activity中设置大小:

**第二点:**不能让这个Activity出现在多任务中,不然会被用户发现就恶心了,这里可以在xml中设置一个属性即可:

**第三点:**启动这个Activity速度要非常快,也就是要赶在系统获取正在运行的Task之前启动起来,不然就无效了,所以按照正常的系统启动Activity流程会很慢的,这里用反射启动Activity,这个技术在之前的文章已经介绍了,这里不多说了,这样启动的话保证在10ms之内完成,这样就可以赶在系统获取Task之前了:

**第四点:**在启动之后要在一定时间内把一像素Activity关闭,不然最顶端的一像素Activity会夺取屏幕的触控焦点,用户点击清空内存就无效了,用户会癫狂的:

有了这四点,这个一像素Activity就可以让我们的应用长生不老了:

当然这个可能有手机适配问题,大家可以看代码进行项目的适配。
这种方式还有一个最大的好处就是,我们知道Android8.0之后系统不允许应用在后台静默启动一个服务了,如果要启动服务就要告诉用户,让用户可以看到,不然就报错,大家可以自行搜索相关内容:

其实这对于用户来说是好事,这样对设备有好处,不然后台启动了一大堆服务在跑,耗电耗性能。如果用了这个一像素保活方案的话那么我们没有启动一个服务,也就不会有这种限制了,同时也让我们的应用长生不老了。

尾声

一转眼时间真的过的飞快。我们各奔东西,也各自踏上了自己的旅途,但是即使多年不见,也因为这份情谊我们依旧如从前那般“亲密”。不忘初心方得始终。加油吧,程序员们,在我看来35岁,40岁从来不是危机,只要永远不要忘记自己为何踏上征程!

为了让更多在学习中或者最近要准备面试的朋友们看到这篇文章,希望你们能多多评论,点赞+转发!

再次感谢所有给我提供过题目的朋友们,感谢一路有你!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值