当前位置: 首页 > news >正文

android 保活的一种有效的方法

android 保活的一种有效的方法

为什么要保活

说起程序的保活,其实很多人都觉得,要在手机上进行保活,确实是想做一些小动作,其实有些正常的场景也是需要我们进行保活的,这样可以增强我们的用户体验。保活就是使得程序常驻内存,这种程序不容易被杀,或者在被杀以后还能完成自我启动,相当于有个监控程序一样,当我们的程序退出以后,能帮我们在拉起来。

保活方式

保活的方式有很多,但是大部分的效果并不是很好,如果有看过其他的一些文章,我们应该有了解,双进程保活,一像素保活,so保活,关播保活等。

但是这些保活方式还是很容易被杀。根本无法对抗一些高级的查杀软件,或者是 adb shell am force-stop XXX

如果能够抗住force-stop 那么基本上也就能在内存上站住脚了。

应用通知保活

通过了那么多的试验后,发现应用通知保活 这种方式是最简单而且支持的厂商也最多。唯一的缺点就是需要用户开启权限。

如果有用过一些push消息以后,我们会发现这些push消息,能够推送到手机上,当我们点击提示的时候会调到我们的应用中,如果利用push的消息,发现手机和我们断开了,我们往手机里面发送一个push消息,是否可以把我们的应用拉起来?

在这里插入图片描述

下面把程序实现出来,看看他能不能过扛得住force-stop

新建一个 NotificationService

open class NotificationService : NotificationListenerService() {private val TAG = "NotificationService"override fun onCreate() {super.onCreate()}override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {return Service.START_STICKY}override fun onBind(intent: Intent?): IBinder? {return super.onBind(intent)}override fun onRebind(intent: Intent?) {super.onRebind(intent)}override fun onUnbind(intent: Intent?): Boolean {return super.onUnbind(intent)}override fun onListenerConnected() {super.onListenerConnected()}override fun onListenerDisconnected() {super.onListenerDisconnected()}override fun onNotificationRemoved(sbn: StatusBarNotification) {super.onNotificationRemoved(sbn)}override fun onNotificationPosted(sbn: StatusBarNotification) {}override fun onDestroy() {super.onDestroy()}
}

NotificationService 是空的,我们这里不做什么事情,如果你想做一些启动其他服务的事情,你也可以在这里onCreate进行。

AndroidManifest.xml 中,加入 NotificationService 服务,注册这个服务到系统中。

        <serviceandroid:name=".service.NotificationService"android:exported="true"android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"><intent-filter android:priority="999"><action android:name="android.service.notification.NotificationListenerService" /></intent-filter></service>

就是这么简单,没有几行代码就可以实现一个保活的程序。我们看看效果如何?

记住一定要到设备和应用通知 把我们的程序打开来。

在这里插入图片描述
我们的demo程序为com.first66.keepmealive ,一开始的时候程序是活着的,我们需要制造一个意外让程序结束,这个意外我们直接用adb 命令来干掉com.first66.keepmealive

adb shell am force-stop com.first66.keepmealive

发现com.first66.keepmealive 先结束以后,后面马上又自己跑起来了。这个过程执行了两次,两次app都能够自己启动起来。

如果需要程序代码的话,可以和我进行私信联系。

http://www.lryc.cn/news/249147.html

相关文章:

  • kibana安装
  • LV.12 D19 ADC实验 学习笔记
  • ubuntu配置免密登录vscode
  • 软件工程--面向对象分析用通俗语言20小时爆肝总结!(包含用例图、活动图、类图、时序图......)
  • HarmonyOS—ArkTS中@Observed和@ObjectLink装饰器的嵌套类对象属性变化【鸿蒙专栏-11】
  • 网络通信安全的坚固防线双向认证技术详解
  • Appium+python+unittest搭建UI自动化框架
  • 使用paddledetection的记录
  • MySQL数据库的备份与恢复
  • Pycharm配置jupyter使用notebook详细指南(可换行conda环节)
  • 企业微信ipad版,http协议接口发开,获取客户群列表
  • Double 4 VR智能互动教学系统在小语种课堂中的教学应用
  • OSEK OS任务调度的底层逻辑
  • ‘tsc‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  • windows文件删除权限
  • Nginx的location块相关知识积累(包括常用的正则匹配表达式的介绍)
  • rabbitMq确认机制之ConfirmType
  • ubuntu下QT搭建Android开发环境
  • QT 做一个登录,注册的跳转页面
  • 数据库第十第十一章 恢复和并发简答题
  • Vue3:利用vueusejs键盘绑定
  • Python与设计模式--设计原则
  • Spire.Office 8.11.2 for NET fix Crack
  • ubuntu终端代理配置
  • postgresql从入门到精通 - 第35讲:中间件PgBouncer部署|PostgreSQL教程
  • 因为jsp for循环的一个空格引起的错误
  • 文件中找TopK问题
  • React 入门使用 (官方文档向 Part2)
  • vue运用之el-cascader组件
  • layui提示框没有渲染bug解决