基于androidpn客户端修改的AndroidPNClient
来源:互联网 发布:真划算购物车源码 编辑:程序博客网 时间:2024/05/18 00:04
最近在做推送,采用的框架是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解决方法
- 使用ServletFileUpload实现上传
- EditText属性
- Android计算函数时间戳的方法
- 用VBA得到EXCEL表格中的行数和列数
- tomcat从 http转成https,并且去掉端口号
- 基于androidpn客户端修改的AndroidPNClient
- 每天学习一点编程(3)(输出给定字串的全部连续子串)
- 【转载自sqlite官网】SQLite Android Bindings
- The Mummy Returns
- subsequence
- 怪异的Switch-2009-11-15 21:34
- EJB AOP + Ehcache实现EJB方法缓存
- C# 琐碎知识-总结
- SPRING.NET 1.3.2 学习1--组件功能说明