基于androidpn客户端修改的AndroidPNClient
2014-04-29 22:35
309 查看
最近在做推送,采用的框架是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。
考虑到这些原因,最后决定重写其中的连接机制。
重写之后,因为与原来的项目差异太大,不好与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客户端] androidpn-client 常见BUG解决方法
- 基于Android平台实战无线点餐系统(客户端(Client)和服务端(Server))
- androidpn-client笔记及BUG修改
- XMPP在android客户端上的应用 Androidpn的使用[找不到org.androidpn.client.PersistentConnectionListener]
- androidpn的学习研究(四)androidpn-client客户端几个类说明
- Android消息推送的Androidpn实现方式:(一)下载androidpn服务器端与客户端的Demo并运行
- Android Push Notification(Android客户端信息推送) (androidpn-server和androidpn-client)
- androidpn-client笔记及BUG修改
- Android消息推送的Androidpn实现方式:(一)下载androidpn服务器端与客户端的Demo并运行
- Androidpn的使用[找不到org.androidpn.client.PersistentConnectionListener]
- XMPP在android客户端上的应用 Androidpn的使用[找不到org.androidpn.client.PersistentConnectionListener]
- android基于socket的局域网内服务器与客户端加密通信
- 基于ONVIF协议的(IPC)客户端程序开发-14 修改分辨率
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android(基于imx53开发板)修改内核支持HDMI显示
- 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——解码篇:(二)用ffmpeg解码音频
- Android基于客户端和服务器的Socket编程例子之Socket基础通讯--socket模型使用
- Androidpn的使用[找不到org.androidpn.client.PersistentConnectionListener