Android应用保活方案的另类出路,让你应用长生不老

一、前言

我们在做Android应用的时候都知道,必须要有一套好的保活方案,这样应用的push到达率高,应用的活跃度也就很高,我们平时也可以发现很多应用我们明明已经关闭了,但是还是可以接收到push消息,或者ps查看进程还是存在的。

当然这里就有很多方案做这件事了,从最早的Java层中接受各种事件和广播等时机唤醒我们的应用,在到Native层的进程保活都是很好的方案,但是随着Android系统的更新,Google也担心用户手机中的一些应用关闭失败导致手机耗电很快。所以也给出了很多策略让保活方案一度受到很大的障碍,同时国内的一些手机厂商更是厉害,直接forcestop操作,这种操作理论上是最终的杀死进程方案了。包括小米,OV等厂商都是这么做的,但是有一个问题就是像微信中及时接受消息的应用如果系统把他强杀之后接收不到消息,用户也是要疯掉的,所以系统厂商会给出一个白名单有一些应用是不会强杀的。

当然现在还有很多应用在一起组成了一个拉活联盟 ,就是你的应用可以把我的应用唤醒,我的应用可以把别人的应用唤醒,只要在这个联盟里面的应用都可以相互唤醒和被唤醒,这样如果你手机中如果装了这些联盟中的应用,只要一个没有别杀死那么联盟中的成员应用都会被唤醒。

还有一种方案是因为我们知道微信和QQ这样的及时应用很多厂商加了白名单 ,也就是这些应用不会被杀死的,那么他们应用肯定会在指定时机中发出一些特定广播,这个需要反编译去看看他们内部到底有哪些广播了,我们可以监听这些广播,只要微信不死,在一定时间内发出了我们注册了他的广播,我们也有可能被唤醒。当然还有很多方案比如网上很多的MarsDaemon框架,不过这个框架对于小米系统来说几乎是失败的。所以本文就针对于小米手机来一个全新的解决方案。

二、分析小米杀进程原理

首先我们看看小米手机他的杀进程方案是啥,我们知道可以按系统的多任务菜单就可以很方便的杀死全部进程或者全部进程了:

那么我们可以找到这个按钮,然后查看指定逻辑,我们这里可以通过UI工具找到id,然后去搜索,但是到哪搜索呢?

其实这里有个知识点就是系统中的界面以及系统应用一般都在/system/priv-app/这个目录下,我们可以直接进入这个目录查找指定应用,这里需要注意的是我们可能很容易认为应该是桌面应用也就是MiuiHome.apk 这个应用,但是通过反编译查看却找不到我们想要的东西,然后就发现了还有一个系统UI应用MiuiSystemUI,然后在弄出来反编译就发现了这个地方:

我们通过思考一下,我们看到的是最近正在使用的应用,那么我们想系统应该出现这个界面肯定也需要调用这个方法获取当前正在运行的应用:getRecentTasks ,我们可以全局搜索这个信息,看到的确有一些内容,通过排查发现有一个重要的类:RecentTasksManager ,然后到这个类查看信息:

我们点击进入查看方法:

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值