Android 保活技巧

原创内容,可以参考这里:http://www.dqqdo.com/article/6


1 最阳光的方式。

    想要避免被杀死就要知道为什么被杀死。
    根据android的 low memery killer 原则进行反逻辑。

    low memery killer 原则会对每个进程根据各种因素,计算一个 OMM-ADJ数值。
    这个数值越小,优先级越大。 系统应用一般都是-12/-16

    其中的技巧有很多原因,比如
    内存占用大小。
    是否foreground.
    是否有service
    是否有BroastcatReceiver.
 
    针对这些原则去做优化就好了。

2    略微流氓的方式,简单来说就是唤起。

    这里分为两种。 
    第一种是系统的唤起。 每一个Service都有回复机制,即使你的进程被杀死了,系统也会给你复活的可能。所以请对你的service组件做好复活处理。
    第二个是多进程相互拉起。 这个也是目前最常见的包活手段。比如市面上大多数的push服务商,都有这种全家桶的拉起方式。

3 灰色手段
   
1  监听notifytionServiceListener,进行唤起。 部分rom做了优化。原生系统(4.4)可以监听。

    2  在系统前台设置一个一像素的对象。保证应用总是处于被回收的列表末尾。(这个我没试过,听说的)

    3  Android 3.1之前,静态广播是没有stop状态的。

    等等


4 终极杀器。
    
     你不好奇为什么微信总是能收到消息吗?难道它不是一个普通的android应用吗?
     对,他确实不是普通应用,因为基本上所有的手机厂商都把他设置到白名单了。
     
     我可以不用小米,但是不可能不用微信。
     我可以不用华为,但是不可能不用微信。
     我可以不用360,,,,,,,那啥。。

     终极杀器就是 如果你们的产品具有一定的体量,可以跟手机厂商谈判,让他们给你开绿灯。
Android应用的保活是指保持应用程序在后台持续运行,即使用户切换到其他应用或关闭手机屏幕,也能接收通知、执行定时任务等。在Android中,保活通常是为了实现诸如消息推送接收、位置服务、后台数据同步等功能。 1. **Service和BroadcastReceiver**: - Service:可以通过startService()方法启动长周期的服务,在后台执行耗时操作。但是,系统可能会在空闲时杀死无可见界面的服务,所以需要设置合适的IntentFilter和配置文件(如`<service>`标签)以维持服务。 - BroadcastReceiver:注册一个广播监听器,当特定事件发生时(如定时广播),应用会被唤醒并处理。 2. **JobScheduler**: Android 6.0 (API 23)及以上引入了JobScheduler API,这是一种更官方的方式来安排定期工作,比如数据同步,其优势在于系统会控制资源分配,避免过度消耗电池。 3. **WakeLock**: 使用PowerManager.WakeLock可以防止设备进入休眠状态,但需要谨慎使用,因为它会增加电量消耗。 4. **前台服务和前台任务**: 当应用处于前台模式时,创建前台服务或前台任务可以保证其不会被系统轻易杀死。然而,长时间的前台活动可能导致用户体验变差。 5. **后台运行权限**: 在AndroidManifest.xml中声明<uses-permission> android:name="android.permission.BIND_JOB_SERVICE" 或者 <uses-permission> android:name="android.permission.FOREGROUND_SERVICE",允许应用请求特定的后台权限。 请注意,虽然以上方法可以让应用尽可能地保活,但根据Google Play的规定,过度消耗系统资源的行为可能会导致应用被下架,因此应合理设计策略并考虑用户的体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值