基于androidpn客户端修改的AndroidPNClient
来源:互联网 发布:修图软件电脑 编辑:程序博客网 时间:2024/06/01 08:34
最近在做推送,采用的框架是androidpn,但对于客户端实在是修改得受不了了,特别是重连和连接那一块,有些BUG的修改实在是难以下手,比如在重连那里,原来的写法是在死循环中不断调用 xmppManager的连接登录,这样,就算是重连成功,依然会每20秒加入重连的任务(连接、注册、登录),然后不断地去执行。显示这对CPU等非常浪费。另外,我还要加入接口,让使用它的客户端能够获取当前的状态,如断开、正在连接或已登录。又不想把xmppManager对象直接给暴露出来同时把里面的相关方法都一个个修改为public的。
考虑到这些原因,最后决定重写其中的连接机制。
重写之后,因为与原来的项目差异太大,不好与fork的项目再做合并,就在github上另外建了一个项目。
重写的内容包括:
1、基于原来的已经改了若干个BUG的版本进行修改,所以这个版本基本上能修复网上多数人提到的那些BUG。
2、把重连的流程改为基于广播机制。因为是应用内广播,而且不能与其他应用的广播相冲突,所以对于与这个流程相关的广播,都采用了LocalBroadcastManager。
3、不采用原来的线程池,因为是单线程来执行连接、注册和登录这些task(实现Runnable接口的类),所以用了一个handler。然后,后面会把连接、注册、登录写在同一个task里,而只是分为三个方法(我似乎陷入了作者的误区,这三个过程本来就不是并行的,它是线性的,要一个接一个的,而且是相关的,为什么要写成三个Runnable然后在结束后去通知其他runnable执行呢?)。
目前改写后,已有一版是可以使用的,托管于github上:https://github.com/msdx/AndroidPNClient。
由于现在有其他项目在忙,这个项目暂时不再做改动。
未来计划有:
1、清理代码(重改为基于广播机制,只是改写了重连的那一部分,其他地方还有一些要改的。而且要清理掉已经不再用的一些方法变量)。
2、连接、注册、登录不再分为三个runnable对象(已完成,2014-5-23)。
3、避免锁屏时线程挂起的方法,由申请电源锁改为使用AlarmManager。
- 基于androidpn客户端修改的AndroidPNClient
- 基于androidpn客户端修改的AndroidPNClient
- 基于androidpn客户端修改的AndroidPNClient
- Androidpn客户端的整合
- Androidpn客户端和服务器的研究
- androidpn学习笔记.与客户端的通信
- AndroidPN客户端的简单集成手机应用
- AndroidPN服务器与客户端的全面解析
- AndroidPn客户端的使用和问题记录
- 基于openfire实现的androidpn的推送
- 基于AndroidPN的消息推送应用
- XMPP在android客户端上的应用 Androidpn的使用[找不到org.androidpn.client.PersistentConnectionListener]
- XMPP在android客户端上的应用 Androidpn的使用[找不到org.androidpn.client.PersistentConnectionListener]
- androidpn的学习研究(四)androidpn-client客户端几个类说明
- Androidpn客户端浅析
- androidpn客户端深析
- Androidpn客户端调试
- [androidpn客户端] androidpn-client 常见BUG解决方法
- 热烈欢迎中国健康产业会山东分会莅临菏泽中山医院参观指导!
- linux系统vim命令解析
- Quick-Cocos2d-x文件结构分析
- wampserver如何设置局域网内可访问
- MFC 制作图标
- 基于androidpn客户端修改的AndroidPNClient
- 姚贝娜父亲致辞泣不成声:来生还要做父女
- 中国大学MOOC-翁恺-C语言程序习题第八周
- Qt之实现360安全卫士主界面(三)
- Swift自定义UICollectionViewCell不显示的解决方案
- Processor 入门教程一[处理 ComboBox]
- autocomplete ajax触发原理
- hibernate的hql查询语句总结
- AndroidWear官方文档总结01 - 简介