进程保活-探索篇之1像素保活

本文探讨了如何提高Android应用在第三方ROM中的存活率,尤其是针对熄屏后被迅速杀死的情况。作者研究了某移动社交App的1像素保活方案,通过注册屏幕亮度监听器,在用户熄屏时启动一个仅1像素的Activity,模拟应用仍处于前台,从而避免被系统清理。此外,文章还提供了相关代码示例和解决闪屏问题的方法。
摘要由CSDN通过智能技术生成

转载请注明出处:
http://blog.csdn.net/BruceHurrican/article/details/61917990

背景:从产品的角度来说,任何一个 app 的 PM都希望自己的 app 在用户手机中的留存率高些,之前我接触到的一个业务需求也是如此,要求提升app 在国内第三方厂商 ROM中的存活率。

如前篇所述 踩坑篇 ,保活策略只在 android 原生系统中起作用,在国内第三方厂商 ROM中是没有效果的。为了提高 app 在第三方 ROM中的存活率,调研了一些方法,最终选择 某移动社交 app的 1像素保活方案,因为这个方案人家没有开源,所以只能自己动手。

针对国内第三方厂商 ROM在 熄屏后app很快被kill 的调查发现,原生系统在内存充足的情况下,用户执行熄屏的操作不会立即 kill app,但是第三方 ROM会,推测是 修改了 ROM在熄屏时执行了内存清理工作,不论此时手机内存是否充足都执行清理。对于没有加入到厂家 ROM清理白名单中的 app,不可避免的被 kill。当然有的人会不同意,说像 QQ、微信之类的就没有在熄屏后被杀,用户也没有手动将其加入系统白名单中。这种情况是 QQ和微信已经加入到系统的白名单中了,当然不需要用户手动添加了。不过这已经不是技术人员可以解决的了,需要双方的商务洽谈了。

我在使用国内第三方 ROM MIUI时发现,如果保持当前 app 在前台存活,执行熄屏,分别等待1分钟、5分钟、10分钟后,再次打开屏幕时,app会存活,即使被 kill 掉也会重新启动。基与此并结合1像素保活方案,我在 app 启动时注册一个监听器监听屏幕亮屏熄屏,当用户启动我的 app 时,并没有按退出 app,切换到其他 app 使我的 app 进入后台待机模式,只要我方 app 没有被 kill,当用户熄屏时,会启动 OnepxActivity,这样人为的制造了一个系统欺骗,告诉 ROM,用户执行熄屏时,当前 UI是我的 app。这样,当用户亮屏时,因为有监听,OnepxActivity 也会销毁,达到一个用户无感知同时又提高了我方 app 在第三方 ROM 中的存活率。

废话讲完,上代码。

public class OnepxActivity extends BaseActivity {
   
    
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Android 进程保活是指应用程序保持在后台运行,即使用户关闭了应用程序的可见界面,仍然能够接收到系统消息或执行定时任务。这通常是通过以下几个机制实现的: 1. **Service**:Service 是 Android 中的一种组件,可以在后台长期运行并执行一些任务,如接收广播、位置更新等。服务可以通过startService()启动,并使用stopSelf()或bindService()来控制其生命周期。 2. **BroadcastReceiver**:应用程序可以通过创建 BroadcastReceiver 来监听特定的系统或自定义事件,当这些事件发生时,即使应用被关闭,广播也会将消息传递给服务或活动,从而间接实现进程保活。 3. **JobScheduler**:Android 6.0(API level 23)以后引入了 JobScheduler API,开发者可以安排定期的任务在后台执行,即使设备处于空闲状态也可以执行。 4. **AlarmManager**:虽然 AlarmManager 不直接支持保活,但结合Service或WakefulBroadcastReceiver可以设置周期性的闹钟,使得应用在指定时间被唤醒,间接实现进程保活。 5. **Foreground Services**:从 Android Oreo (API level 26)开始,Google引入了 Foreground Services,这些服务需要显示通知,即使在后台也能保持运行。 6. **后台任务栈**:通过管理ActivityStack,应用程序可以创建一个堆栈,当用户关闭应用时,任务栈中的顶部活动会被保存,直到用户再次启动应用。 要避免过度保活导致的资源消耗和用户体验下降,还需要注意遵守Android的后台操作策略和权限管理规范。同时,根据用户行为和需求选择合适的保活策略是非常重要的。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值