热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

关于进程保活的三两事

前言本文中所讲的保活,并非之前所做的无论用户怎么折腾都还能常驻后台的保活,只是指在用户不主动杀进程的情况下,能保持服务长存的方案。公司的做的是B2B的产品,部分业务必须要及时的通

前言

本文中所讲的保活,并非之前所做的无论用户怎么折腾都还能常驻后台的保活,只是指在用户不主动杀进程的情况下,能保持服务长存的方案。

公司的做的是B2B的产品,部分业务必须要及时的通知用户,在Android5.0之前还好,毕竟保活的方案不少,而且不少手机rom对后台服务的管控也并不是很严格(某些机型除外),然而现在,一言不合就是杀进程,虽然作为手机用户的体验更好了,但是作为开发者却头疼万分,因为leader是不会给你谈体验的,只会问你能不能做到,人家QQ、360、微信都能保活,为啥你不能(呵呵......)。

 

保活探索

一、进程守护

这个应该是大家之前最常用的解决方案了,最简单的就是双进程service通过广播进行守护,在nexus5机型的5.0.1上用过,有效果,但是效果很一般,更不要说在现在的机型上了。后来,就有想到网上通过jni将子进程变成孤儿进程由init进程领养的方案,做了简单的demo测试,发现5.1以上依旧不行......

 

二、无声音频

之前听说在上古时期,迅雷就是由播放无声音频的方案来实现在IOS上后台下载的功能的,让系统认为用户在同音乐,所以保留当前进程。套用此方案,竟然发下在华为荣耀8上竟然可用,但是需要有播放声音的间隔控制(无声音频播放间隔>5s,依旧会被Kill),不幸的是,在同事的某台华为4.4手机并不能成功实施,只能在黑屏之后强行续命5分钟.......后来查了下,在网上还能找到某些版本的rom杀qq音乐的记录,可见白噪声最多也只能续命了。

 

三、前台页面

使用前台页面进行保活完全是个意外,应为在测试的时候我们发现一个规律,当app处于前台时,无论发生什么情况(异常除外),该app都会活下去。所以我们对app前台处理分两种:1、正常情况下,会有一个信息浮框展示在页面(本身就是客户需求)。2、增加亮屏熄屏广播监听,熄屏时,服务会拉起一个透明页面,亮屏时,会finish掉透明页面。当然,也有无声音频续命(部分机型上缺少亮屏广播,比如海信的某型号......),原理自然也就是前台进程,优先级最高了。

在测试的20种机型上,都能做到进程保活,当然,为了用户体验,我们也做了一些优化(1、无声音频长度与间隔长度。2、在无屏幕广播机器上的轮询机制管理。3、由用户选择是否开启进程保活......)

 

四、其他方案

中间过程中,我们考虑了其他的方案,比如:电话提醒、短信提醒、白名单......电话和短信并不是所有用户都愿意使用的,白名单又因为国内定制系统过多,最终作罢。

 


推荐阅读
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 高效解决应用崩溃问题!友盟新版错误分析工具全面升级
    友盟推出的最新版错误分析工具,专为移动开发者设计,提供强大的Crash收集与分析功能。该工具能够实时监控App运行状态,快速发现并修复错误,显著提升应用的稳定性和用户体验。 ... [详细]
  • 本文将详细介绍如何使用剪映应用中的镜像功能,帮助用户轻松实现视频的镜像效果。通过简单的步骤,您可以快速掌握这一实用技巧。 ... [详细]
  • 本文介绍如何在 Xcode 中使用快捷键和菜单命令对多行代码进行缩进,包括右缩进和左缩进的具体操作方法。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • 本文介绍如何通过Windows批处理脚本定期检查并重启Java应用程序,确保其持续稳定运行。脚本每30分钟检查一次,并在需要时重启Java程序。同时,它会将任务结果发送到Redis。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • SQLite 动态创建多个表的需求在网络上有不少讨论,但很少有详细的解决方案。本文将介绍如何在 Qt 环境中使用 QString 类轻松实现 SQLite 表的动态创建,并提供详细的步骤和示例代码。 ... [详细]
  • 在维护公司项目时,发现按下手机的某个物理按键后会激活相应的服务,并在屏幕上模拟点击特定坐标点。本文详细介绍了如何使用ADB Shell Input命令来模拟各种输入事件,包括滑动、按键和点击等。 ... [详细]
  • 本文介绍了两种方法,用于检测 Android 设备是否开启了开发者模式。第一种方法通过检查 USB 调试模式的状态,第二种方法则直接判断开发者选项是否启用。这两种方法均提供了代码示例和详细解释。 ... [详细]
  • 本文将深入探讨PHP编程语言的基本概念,并解释PHP概念股的含义。通过详细解析,帮助读者理解PHP在Web开发和股票市场中的重要性。 ... [详细]
  • 本文探讨了将类成员属性设置为私有的重要性,并通过具体代码示例展示了如何实现对这些属性的有效控制。私有成员属性有助于增强数据的安全性和完整性,确保只有经过验证的数据才能被修改。 ... [详细]
author-avatar
书友34043247
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有