2 a52728820 A52728820 于 2016.04.21 14:34 提问

Android service怎么在后台一直接收推送
  最近在做几个推送的demo,像百度云推送、极光推送,它们都是demo中集成后,可以正常接收推送,

即使我们把程序退出,或者长按Home键清空最近程序后依旧可以接收。
但是我自己用xmpp,参考开源的项目实现的Android端接收推送时,正常打开程序和
关闭程序时都是可以收到推送,如果长按Home键清空程序的话,就收不到程序了,好像是
后台接收推送的service被清掉了,但是我的service是startService开启的,配置文件中的
process属性也设置的“:message”,这样还是不行,求解???

7个回答

bdmh
bdmh   Ds   Rxr 2016.04.21 14:40

你要增加服务的复活几率,也就是网上常说的杀不死的服务,但是绝对杀不死是不可能的,你可以接收一些系统广播,然后启动服务,现在常用的推送服务都是这样

A52728820
A52728820 我看了百度和极光的说明,了解这个原理,只是不明白为什么长按Home键清除的程序到底是什么意思
大约 2 年之前 回复
molashaonian
molashaonian   2016.04.21 16:45

在配置文件中启动服务,可以参考极光推送的demo

A52728820
A52728820 这个应该没什么太大关系吧,因为现在的情况是不同情况下关闭程序后能不能接收推送。。
大约 2 年之前 回复
guokehello
guokehello   2016.04.21 22:00

搞一个BroadCastRecviver,接收系统的ACTION_TIME_TICK,每次收到之后检查你服务是否在运行,如果停止运行就启动它。

A52728820
A52728820 这个方法有点流氓。。。能提高service的存活时间
大约 2 年之前 回复
guokehello
guokehello   2016.04.21 22:00

搞一个BroadCastRecviver,接收系统的ACTION_TIME_TICK,每次收到之后检查你服务是否在运行,如果停止运行就启动它。

crazy1235
crazy1235   Ds   Rxr 2016.04.23 10:51

尽量保证你的service“活着”~~

A52728820
A52728820 这个我也知道。。。但是它总是死了..
大约 2 年之前 回复
baiyuliang2013
baiyuliang2013   2016.05.06 10:23

你这种情况是正常的,总之是尽量保活你的Service,至于第三方的Service如何保活的,这个属于机密技术,如果你不会,只能参考网上的方法去提高复活几率

SEU_Calvin
SEU_Calvin   2016.10.30 19:26
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Android后台推送详解
运行环境 1. SDK支持Android 2.2 及以上版本的手机系统。 2. 手机必须要有网络(GPRS、3G或Wifi网络等)。 3. 手机可以没有SIM卡,但是可能导致部分功能缺失。 4. 手机可以不挂载SD卡,但会使部分功能无法正常工作。 说明 Appkey:预先分配的第三方应用ID。 AppSecret:认证密钥,预先协商后登记到双方服务端。 Client
android通过服务实现消息推送
这里运用到的andorid知识模块主要有Notification和Service,和一个android-async-http-master开源框架 android项目中,有时会有这样一种需求:客户每隔一段时间,就像服务器发送一个请求,以获取某些重要的、实时更新的消息。比如天气预报。 如何让应用实现在后台一直处于运行状态,并且每个一段时间就向服务器发一个请求?android里的四大组件之一:服务
android通过Service实现消息推送(客户端+服务器)
模拟android客户端通过Service,每隔一段时间向系统发送一个请求,已获取重要的,实时更新的消息
【Android】揭秘如何利用Service与线程制造安卓后台通知栏推送
安卓设备的后台通知栏推送很烦,主要是可以通过利用安卓的Service功能,在app被点击Home键或者返回键之后,依旧可以在挂载后台运行。反正Home键或者返回键只能杀死Activity而不能终结Service的,不像Windows点关闭键默认是关闭程序界面+程序线程。 本文的意义相当于在Windows中制造一条线程,或者是对Windows应用程序的关闭键进行重写,让其应用程序的关闭仅仅是隐藏界
如何保证service一直在后台运行
作为安卓四大组件之一的service,是一个不需要提供与用户交互的UI,且运行在后台,执行长时间操作或者远程操作的组件。 在实际开发应用过程中,我们常常会想要自己的service一直在后台运行,但是安卓会在系统内存低的时候自动清理后台服务,这时我们的服务很有可能就会被kill,浏览了网上的许多方法,加上自己的实践,在这整理了一些让service一直运行在后台的方法:     一、在servic
Android 关于App被杀死后,如何接收极光推送
作为一个程序媛,我要做到的就是听从上级的安排,有需求就实现。但是有的事情我表示真的很无力啊,就比如标题所说的需求。 因为ios在杀死app后都可以接收到通知,所以不懂的人就会觉得那Android应该都是可以的啊, 这个真是坑了我好多次啊,还有桌面角标也是同样的,人家ios就是系统支持的啊。我的天!! 产品经理和项目经理居然都不知道两者是有区别的,我的天啊!!! 1.如何在杀死APP
【android极光推送】—从客户端到后台,一文通吃
前记 推送原理浅析 平台说明 概念解释 推送的三种实现方式 客户端直接向推送服务方发送Http请求 项目服务器通过Http转发推送请求至推送服务方 项目服务端使用SDK进行功能集成 关于推送的种类概述 android客户端初步实现 集成SDK说明 集成步骤 1下载官方提供的SDK集成包 2手动导入SDK 3在极光的官网创建一个应用 4编写一个MyApplication类初始化SDK 5配置 Andr
如何让android的service一直在后台运行
1. 把service和activity分开,让service开机启动。设置一个broadcast receiver接受开机信号, 使用RECEIVE_BOOT_COMPLETED的permission, 然后启动service。activity启动后绑定到service上, 通过ipc机制通信,acitivity结束后松绑。注意安装后要手动启动service,不会自动启动,之后重
如何保持service长期在后台运行
android 一直运行的后台服务是不存在的,而且也不是最佳实践,因为一直运行的后台服务会耗费大量系统资源,影响其他程序的响应从而影响到用户体验。 可以考虑使用如下几种方案来达到一直运行的效果。 1. 调用startForeground方法,android: Service vs SingleTop Activity moved to background 2. 使用AlarmManag
Android APP被关闭后无法收到推送消息(尝试)
1.   Android端进程被杀死后,目前自带的保护后台接收消息活跃机制。暂时没有什么好的机制保持任何情况下都活跃 文章参考:http://blog.csdn.net/marswin89/article/details/50917098 android原生系统用home键杀进程可以起来,如果是强行停止就只能用户自己手动开启应用 如果是miui等第三方应用,杀了进程默认无法自启动 如果是r