热门标签 | 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、由用户选择是否开启进程保活......)

 

四、其他方案

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

 


推荐阅读
  • 本文探讨华为方舟编译器的工作原理及其如何有效改善安卓设备的运行效率和流畅度。 ... [详细]
  • 项目展示——微微博
    项目展示——微微博微微博,一个强大的新浪微博的Android客户端,采用TX的微信界面来开发Sina的微博客户端大四上学期参加比赛和孟丹一起做的 ... [详细]
  • 深入解析 Android 中的 ActivityGroup 实现
    本文详细探讨了如何在 Android 应用中使用 ActivityGroup 来实现类似微博客户端主界面的效果,并分析了 TabActivity 的局限性,推荐使用更为灵活的 ActivityGroup 方案。 ... [详细]
  • Linux系统中高效解决高Buff/Cache占用问题
    本文详细探讨了在Linux系统中遇到的高Buff/Cache占用问题及其解决方案,提供了手动清除与定时任务自动化处理的方法。 ... [详细]
  • 深入理解SAP Fiori及其核心概念
    本文详细介绍了SAP Fiori的基本概念、发展历程、核心特性、应用类型、运行环境以及开发工具等,旨在帮助读者全面了解SAP Fiori的技术框架和应用场景。 ... [详细]
  • 微服务架构详解及其入门指南
    本文详细介绍了微服务的基本概念、发展历程、与传统架构的区别及优势,并探讨了适合采用微服务架构的场景。此外,文章还深入分析了几个主流的微服务开发框架,特别是Spring Cloud的组成和特点。 ... [详细]
  • 解决MySQL Administrator 登录失败问题
    本文提供了解决在使用MySQL Administrator时遇到的登录错误的方法,包括启动变量和服务部分禁用的问题。同时,文章还介绍了通过安全配置模式来解决问题的具体步骤。 ... [详细]
  • iOS 面试实战:15 道经典面试题及解析
    本文精选了15道iOS面试题,并提供了详细的解答思路。旨在帮助开发者更好地准备面试,避免因准备不足而导致的紧张和焦虑。 ... [详细]
  • Sass 是一种 CSS 的预处理器,通过使用变量、嵌套、继承等高级功能,使得 CSS 的编写更加灵活和高效。本文将介绍 Sass 的基本语法及其安装使用方法。 ... [详细]
  • 电子与正电子的相互作用
    本文探讨了电子与正电子之间的基本物理特性及其在现代物理学中的应用,包括它们的产生、湮灭过程以及在粒子加速器和宇宙射线中的表现。 ... [详细]
  • 本文介绍了EasyRTSPClient这一高效、稳定的RTSP客户端工具库,并详细阐述了其在与大华球机对接过程中遇到的预览问题及解决方法。 ... [详细]
  • 本文介绍了如何在Android应用中通过编程方式获取设备的屏幕宽度和高度,提供了一种简单且高效的方法来访问这些重要的显示参数。 ... [详细]
  • Android开发经验分享:优化用户体验的关键因素
    随着Android市场的不断扩展,用户对于移动应用的期望也在不断提高。本文探讨了在Android开发中如何优化用户体验,以及为何用户体验的重要性超过了技术本身。 ... [详细]
  • 本文详细解析了LeetCode第300题——最长递增子序列的解题方法,特别是如何使用动态规划来高效解决问题。文章不仅提供了详细的代码实现,还探讨了常见的错误理解和正确的解题思路。 ... [详细]
  • 优化 Kotlin 中的 Android Retrofit 和 RxJava 使用
    本文介绍如何在 Kotlin 语言中进一步优化 Android Retrofit 和 RxJava 的使用,通过动态代理简化线程管理,并提供更简洁的代码实现。 ... [详细]
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社区 版权所有