您当前的位置:首页 > 电脑百科 > 站长技术 > 移动营销

Android 保活措施你会了吗?

时间:2019-12-17 10:44:52  来源:  作者:

Android 保活措施你会了吗?

 

这个文章只是Android历史保活方案总结,没有什么特别的参考意义,Android 已经到10了,100%保活本身就已经不复存在,文章中所有的方案,都是有可能有用,毕竟4.4还有人用,至于要不用可以自己参考,毕竟当PM就是让你应用不死,你能不写代码吗?

保活通常分为2种方案,一种为提高进程优先级,防止被杀,另一种为进程被杀死拉活

1. 进程优先级

Android系统会尽可能的保持应用进程,但是当需要建立新的进程或者运行更重要的进程,便会回收优先级低一些的进程,这个就是lowmemorykiller的工作。而进程的优先级其实就是 /proc/pid/oom_adj

进程的优先级排序

  1. 前台进程(Foreground Process)
  2. 可见进程(Visible Process)
  3. 服务进程(Service Process)
  4. 后台进程(Background Process)
  5. 空进程(Empty Process)

前台进程

  1. 拥有 用户正在交互的 Activity(正处于 onResume中)
  2. 拥有 Service绑定到正处于 onResume的 Activity
  3. 拥有 Service 调用 startForeground 成为前台服务
  4. 拥有 Service 正在执行生命周期回调(onCreate、onStart、onDestroy)
  5. 拥有 BroadcastReceiver 正在执行 onReceive

可见进程

  1. 拥有 Activity 处于 onPause ,此时可见但是不可操作
  2. 拥有 Service 绑定到正处于 onPause的 Activity

服务进程

  1. 仅通过 startService 启动的 Service

后台进程

  1. 拥有 Activity 处于 onStop

空进程

  1. 不拥有任何活动的组件进程

2. 回收策略

从Zygote fork出来的进程都会被储存在 ActivityManagerService.mLruProcesses 列表中,由ActivityManagerService进行统一管理。ActivityManagerService会根据进程状态去更新进程所对应的 oom_adj 的值,当内存达到一定的阈值会触发清理 oom_adj 高的进程。

 

Android 保活措施你会了吗?

 

3. 保活方案

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_STICKY 和 START_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 其他拉活方式

3.3.1 利用系统官方的服务,或者三方服务

  1. 国外可以使用 Firebase 的云端推送
  2. 国内可以使用极光推送等服务

主要还是依靠,自己应用与其他应用使用相同SDK,然后相同的SDK里面内置了相互唤醒功能,具体保活的效果也是依赖三方SDK的能力



Tags:Android   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
今天面试遇到同学说做过内存优化,于是我一般都会问那 Bitmap 的像素内存存在哪?大多数同学都回答在 java heap 里面,就比较尴尬,理论上你做内存优化,如果连图片这个内存大户内存...【详细内容】
2021-12-23  Tags: Android  点击:(8)  评论:(0)  加入收藏
Android logcat日志封装logcat痛点在Android开发中使用logcat非常频繁,logcat能帮我们定位问题,但是在日常使用中发现每次使用都需要传递tag,并且会遇到输出频率很高的log,在多...【详细内容】
2021-12-22  Tags: Android  点击:(8)  评论:(0)  加入收藏
对项目的基本介绍 1.整个框架主要是给MVVM框架使用的,自己写完interface接口后,通过自定义的注解就能自动生成接口方法 2.用Kotlin的Flow去代替Rxjava,因为我发现RxJava功能很...【详细内容】
2021-12-08  Tags: Android  点击:(16)  评论:(0)  加入收藏
前言在Android开发过程中,有些时候会根据需要引用别的项目到当前项目里面,而且以Module形式引用。所以本篇博文就来分享一下怎么以Module形式引用别的项目到当前项目中,方便开...【详细内容】
2021-12-07  Tags: Android  点击:(22)  评论:(0)  加入收藏
新型Android恶意木马程序伪装成数十款街机、射击和策略游戏,通过华为应用市场AppGallery进行分发,从而窃取设备信息和用户的手机号码,全球目前至少有930万台Android设备被该恶...【详细内容】
2021-12-01  Tags: Android  点击:(24)  评论:(0)  加入收藏
作者:fundroid这篇文章偏阅读一些,大家可以了解下 Android 的一些最新动向。每年9/10月份 Google 都会举行约为期2天的 Android Dev Summit,在活动上 Google 的技术专家们会分...【详细内容】
2021-11-30  Tags: Android  点击:(15)  评论:(0)  加入收藏
一、 准备工作1、安装JDK,下载地址(可能需要一个oracle账号,大家百度一下或者自行注册一个就行。尽可能选择8或者11,这两个是长期版本)Java SE | Oracle Technology Network | Or...【详细内容】
2021-11-23  Tags: Android  点击:(28)  评论:(0)  加入收藏
如果你是一名忠实的Android玩家,那么可能会知道,今年的Android 12系统在版本规划上与“往届”相比可以说是很有些特殊。具体来说,除了前段时间刚刚推出正式版的Android 12外,谷...【详细内容】
2021-11-10  Tags: Android  点击:(24)  评论:(0)  加入收藏
使用Maven Publish Plugin插件。(官方支持)一、在Library的build.gradle中配置plugins { id 'com.android.library' id 'kotlin-android' id 'k...【详细内容】
2021-11-05  Tags: Android  点击:(37)  评论:(0)  加入收藏
今年5月,谷歌推出了Android 12,这是原生安卓系统史上最大的设计变化,10月4日,谷歌推出全新的Android12正式版本,并且宣布会在今年晚些时候应用于安卓设备,对比Android11的挤牙膏式...【详细内容】
2021-10-29  Tags: Android  点击:(125)  评论:(0)  加入收藏
▌简易百科推荐
为什么有人用企业微信一场活动裂变上千人?有的却一个群都进不满?其实大多数运营,都忽略了企微基础功能的搭建!链小卡经常会收到一些小伙伴的提问,比如:企业微信如何设置自动回复、...【详细内容】
2021-07-20  群友科技  搜狐号  Tags:企业微信   点击:(107)  评论:(0)  加入收藏
任何一个平台的起来,一定会伴随着一批陪跑者,所谓陪跑者,就是总有那么一批人,看好这个平台,然后在某个阶段切入,玩了几个月之后,又黯然退场。当然,在行业内部,我们对这类人,不叫陪跑...【详细内容】
2021-07-15  那个吴小明    Tags:视频号炮   点击:(65)  评论:(0)  加入收藏
电商小程序如今已然占据了行业的大片河山,更有不少时代黑马通过小程序获取了人生的第一桶金,又或是成功实现了企业的改革和转型。而小程序的运营问题一直是我们的重中之重,毕竟...【详细内容】
2021-04-13  中联科技   企鹅号  Tags:电商小程序   点击:(202)  评论:(0)  加入收藏
我打小程序可以实现单号分享功能啦,此功能不需要绑定店铺,可以随时随地进行单号分享,具体操作如下:一、微信搜索小程序{我打快递助手}二、点击登录,选择电子面单分享按钮三、点击...【详细内容】
2021-03-29      Tags:小程序,单号分享   点击:(390)  评论:(0)  加入收藏
自从微信小程序上线之后,很多的商家对小程序有很高的期待,因为小程序的使用体验可以媲美app,而且使用起来比较方便,西安的青云在线小编告诉您,现在微信小程序之所以大家都比较喜...【详细内容】
2021-02-03      Tags:微信小程序   点击:(182)  评论:(0)  加入收藏
近些年,小程序的迅速崛起,给广大企业带来了全新的发展契机,大家争先恐后去进行长沙小程序开发,想要借此在其中获取发展机会。但小程序的成败往往取决于用户的留存情况,而小程序想...【详细内容】
2021-01-22      Tags:小程序   点击:(179)  评论:(0)  加入收藏
根据官方今年9月披露的数据显示,小程序的日活跃用户超过4亿,覆盖超过200个细分行业,小程序超过百万级体量,小程序从业者达536万。由此可见,小程序作为微信闭环生态系统中重要的一...【详细内容】
2020-10-14      Tags:小程序裂变   点击:(105)  评论:(0)  加入收藏
做APP推广的,无论是新手菜鸟,还是入行多年老司机,难免一不小心会掉坑,今天姑婆特意整理了一些常见的app推广之大坑小坑,除了提醒大家之外,也欢迎在做app推广的同学们把自己遇到的...【详细内容】
2020-10-09      Tags:APP推广   点击:(118)  评论:(0)  加入收藏
尽管越来越多的商家开始认识到小程序快速、低成本获客的优势,但制作出的小程序却徒具其形,并没有真正运营起来,导致小程序并没有给商家带来实实在在的收益。为此,小编整理了一份...【详细内容】
2020-09-08      Tags:小程序运营   点击:(138)  评论:(0)  加入收藏
07:13详细许多企业在进行APP开发后,都比较关注自己APP应用在应用市场的下载量,因为下载量高,就意味着APP应用越受欢迎,这样最终的效果才会更好。但其中有很多APP应用的下载量其...【详细内容】
2020-09-03      Tags:APP下载   点击:(252)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条