第一次在上发文章,有点紧张。

在android团队和各大厂商的努力下,以前的那种启动一个应用,后面会跟着启动一堆服务的情况越来越少见,android手机现在的使用在我个人觉得,已经比iOS差不到哪儿去了。因为android干掉了一个对于用户非常恶心,对于开发非常有用的东西——保活。

首先介绍下保活是什么东西,在我们的实际app开发中,有很多的产品经理非要设计出一些违反常规的功能,需要我们的手机和我们的服务器保持长连接,服务器实时的下发一些数据给我们的手机。对于长连接很好解决,利用普通的网络IO或者是NIO都能解决,但是当我们的应用进程在手机资源不足或者是第三方安全软件的强杀下,我们的应用进程就会被干掉,这个时候,任何的长连接都会被断掉。这个时候就催生了一种技术——保活,就是保证我们应用进程的活性。

在以前android没有注意到这方面的时候,保活的手段非常多,但是最有效的莫过于进程互拉。当我们启动一个应用,我们的应用会再后台启动一段jni代码,再里面fork一个子进程出来,然后我们的应用进程和子进程定时互相检测,当有一方停掉的时候,另外一方给拉起来,这就是我们保活收到。

但是手机发展到5.0之后,出线了一种叫杀掉进程组的东西,就是当我们退出应用或者是调用手机任务管理器,清除应用的时候,杀掉的这个应用所在的进程组的所有进程,那么子进程也同样会被杀掉。以前最有效的保活手段,一样的灰飞烟灭。

最近在里面看到一篇文章,写保活的,其实那些手段我也试过,但是负责人的告诉大家,再新版本的系统上,这些都是无用功。。。github上的那些框架也就是框架而已,并没有什么大的作用。下面根据手机QQ给大家介绍一个提高活跃度的保活方案,但是这个方案只是提高活跃度,并不能完全保活。。。。。其实利用了一个很简答的东西推送。

下面假如是一款及时通讯软件:

1)将Service设置成为前台进程(这样当手机资源不足的时候,不会强杀这个应用)

2)集成推送(这片文章提高活性主要就是利用这个,下面来说说这个方案)

推送是什么就不说了,基本每款app都集成了推送。下面来介绍一些推送的原理,当我们的应用启动的时候,我们启动了推送的SDK,会有一个推送的pushId(有的叫token)当我们需要推送的时候,将需要推送的pushId和推送的内容利用网络请求发送到推送服务器,然后推送服务器根据pushId找到客户端,然后利用“推送通道”将消息下发到手机。推送通道其实就是推送SDK和推送服务器的长连接。

上面知识介绍一个原理,跟我们提高保活的方案还没有多大的关系,正题从这里开始。

其实推送的SDK也是一个进程,各大厂商也是想破脑袋来保证推送的活跃度,某推(具体不说了,怕被说打广告)出了一个方案,一个推送在一台手机里面只有一个推送通道的连接,当一个手机里面有一个集成了这个推送的应用启动X推的推送通道,那么这个手机的所有应用就都能收到消息了。

基于这个原理,我们可以在我们的手机里面也集成推送,服务器端定时发送透传的心跳消息,当我们手机收到推送的时候,检查下我们长连接的service是否还存活,如果存活就不处理,如果不存活,那么就启动这个Service。这样就能提高应用的活跃度了。其实这是个很简单的方案。。。。

增加推送活性的方案:

1)推送的选型:最好选一些大厂app或者是app群体使用大的推送。App使用大那么用户再使用某个app的时候,就会启动推送通道,这样增加推送通道的活性也就是增加了你的应用的活性。

2)最好是选用系统级别的推送:小米推送、华为推送都号称是系统级别的推送,推送通道永远不死。

3)多家推送集成:我们可以一口气集成集中系统级别推送+一个app群体大的推送,根据手机系统类型判断,小米手机就启动小米推送、华为手机就启动华为推送,其他的系统就启动第一个选择的app群体大的推送。这样是把第一个和第二个结合起来的。(最后这个方案,也可以用在依赖推送的应用上,增加推送到达率

这样的做饭不能保证完全活跃,但是会增加你的应用的活性,毕竟死馬当做活马医。。。。。。

如果有问题,欢迎大家评论和留言给我哈。。。。

更多相关文章

  1. Android(安卓)sdcard媒体文件更新(程序控制刷新MediaStore数据库)
  2. Android(安卓)Binder 应用层调用过程分析
  3. Android(安卓)开发解决APP在18:9,18.5:9,19:9,19:10尺寸的手机上不
  4. 消息推送Android(安卓)sdk集成指南
  5. Android进程管理详解
  6. Android(安卓)的不同尺寸图片和布局(手机)
  7. Android新手入门2016(3)--Android真机调试
  8. Android多进程间采用AIDL方式进行通信简单DEMO
  9. android无需Root手机,使用Android(安卓)Studio无源码动态调试教程

随机推荐

  1. Android(安卓)Metro风格的Launcher开发系
  2. 线程对象Android(安卓)开发之多线程处理
  3. Android开发技巧:给Button的点击上色
  4. Android签名机制之---签名过程详解
  5. [Java][Android][Process] Process 创建+
  6. 【Android】Android系统启动过程
  7. 打好Android基础,实战中运用基础
  8. iOS设备蓝牙类库的选择
  9. 如何将音视频发布到移动设备,android,ios,ip
  10. 记一次(IDA+实机)附加调试Android原生库过