dan*_*per 12 android xmpp push keep-alive smack
我正在开发一个通过XMPP接收推送通知的应用程序(我知道C2DM,但它有一些限制,我不能因为它而使用),问题是连接一段时间后被垃圾收集而且我不能向Android设备发送推送通知.
我想我需要实现一个Android服务,但我不知道如何实现一个能保持连接活动的服务.有人可以帮帮我吗?
Flo*_*low 20
我不确定"垃圾收集"是否是正确的术语.您的活动更有可能被Android关闭,因为您在活动中创建了连接.
但你是对的,为了保持稳定的连接,你需要将XMPP连接放入服务中.但要确保连接在一个额外的线程中,因为服务本身不是一个额外的进程或线程.这可以通过例如Handler来完成.
HandlerThread thread = new HandlerThread(SERVICE_THREAD_NAME);
thread.start();
handlerThreadId = thread.getId();
serviceLooper = thread.getLooper();
serviceHandler = new ServiceHandler(serviceLooper);
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过消息/意图与服务线程进行通信.另一种选择是Binder界面.
您还可以了解其他人如何做到这一点:Beem和GTalkSMS都是实现与Android服务的XMPP连接的开源项目.GTalkSMS使用IntentService方法,而Beem使用Binder与XmppConnection通信.
请注意,我们与GTalkSMS建立了非常稳定的连接,但它从未像股票GTalk服务/客户那样好.一个原因是smacks默认保持活动检查计时器是5分钟,这是移动设备的常用方法,当您想要尽可能多地节省电池时.所以我不得不将它设置为更高的值,这带来了一些缺点.在这方面,您将始终在快速,响应和稳定的连接与电池寿命之间进行权衡.
| 归档时间: |
|
| 查看次数: |
9803 次 |
| 最近记录: |