`

Androidpn的框架浅析

 
阅读更多

开发部署方法:

  1. 下载androidpn的客户端和服务器:地址为:http://sourceforge.net/projects/androidpn/files/

  2. 解压服务器端,点击运行,访问:http://127.0.0.1:7070/user.do ,就可以看服务器端的管理页面,用这个管理页面,就要向客户端push消息。

  3. 把客户端导入到eclipse工程中,修改raw/androidpn.properties文件中的xmppHost的值,如果在模拟器上访问就设置为10.0.2.2(详情请见:http://blog.csdn.net/android_tutor/article/details/4996752 ),如果是在手机上访问就设置为服务器的ip就行。

 

讲讲androidpn客户端的写法:

先从最关健的后台Service开始请起:

从类的层次看这个结构比较简单,让其变得复杂的是,其里面有三个线程:主线程,进行Xmpp通信线程,连接出错重试线程。

对上图进行说明:

  1. 在NotificationService里创建一个单线程,让其对服务器进行连接,由于使用Xmpp连接服务器要分为三步:连接,注册,登陆。所以用一 个栈来保存要执行的Task任务(ConnectTask,RegisterTask,LoginTask),还后再按这个顺序进行执行。

  2. 连接Xmpp服务器的线程用的是Executors.newSingleThreadExecutor(),这个本身可以不停的submit任务,那为什 么还要自己用一个栈来保存Task了,我的猜测是虽然可以不停的提交任务,但其执行顺序不能保证,哈哈,这个推测可能是错的。

  3. 连接线程在连接,注册,登陆的过程中,都有可能出错,都可能会失败,这时我就要有一个重连的机制,在Androidpn里开了另外一个线程来进行重试,其重试不是每次都按多少秒来进行重试,而是有其自己的规则。

 

 

private int waiting() {
	// 重试次数大于20次,其睡眠600秒
    if (waiting > 20) { 
        return 600;
    }
    // 重试次数大于13次,睡眠300秒
    if (waiting > 13) { 
        return 300;
    }
    // 重试次数小于等于7次,睡眠10秒,大于7次,睡眠60秒
    return waiting <= 7 ? 10 : 60;
}
 

 

  4. 在LoginTask里,如果登陆了服务器端,其就会注册一个监听器,用于监听服务器push的数据包(Packet),再通过发送广播的方式来通知要进行显示的程序。

  5. 在登陆服务器后,也有可能出错,所以在登陆后,会设置一个ConnectionListener,用于监听连接出错的时候,再合适重连线程,进行重连

  6. 在登陆过程中,有一种错误要单独处理,就是账号和密码无效的时候,这个时候其返回的状态码是401,这种情况应该把本地保存的帐号和密码都清掉,再重新进行连接,不然会永远都登陆不上服务器端。

 

其以上的线程写法不一定是最好的,我们也可以用Hander来进行重试,或者用TimeTask来管理线程也可以。

分享到:
评论

相关推荐

    androidpn推送框架+文档

    androidpn为Android应用提供消息通知推送支持, 它本质上服务器端基于 Openfire,客户端基于 asmack,这二者都最 XMPP IM 开源实现里的二个基本组件,应该说 androidpn 只是把二者更多地结合起来用于做 Push的场景。...

    Android推送框架 androidpn

    Androidpn推送框架源码分析及配置方法,压缩包里面包括服务端和客户端代码,及说明文档

    androidpn-client-0.5.0.zip和androidpn-server-0.5.0-bin.zip

    AndroidPN环境搭建 本文件真对网上的环境搭建源网站无法登陆设立 &lt;坏掉了/&gt;http://sourceforge.net/projects/androidpn/ &lt;/坏掉了&gt; 说明: http://www.cnblogs.com/devxiaobai/archive/2011/07/09/2101794.html ...

    经过修改的Androidpn项目

    总之,“经过修改的Androidpn项目”提供了一个强大的、经过优化的推送服务框架,对于想要在Android应用中集成类似功能的开发者来说,这是一个宝贵的资源。通过阅读和理解代码,开发者可以学习到如何在Android环境下...

    androidpn服务器推送

    AndroidPN(Android Push Notification)是Android平台上的一种消息推送服务,旨在帮助开发者实现在应用程序后台时仍然能够接收服务器发送的通知或数据。在AndroidPN服务器推送的实现中,有以下几个关键知识点: 1....

    androidpn 客户端模拟代码

    在Android平台上,AndroidPN(Android Push Notification)是一个用于实现远程推送通知服务的开源项目。它允许开发者通过服务器向Android设备发送消息,即使应用程序在后台运行或完全关闭时也能接收到这些消息。本...

    AndroidPn(客户端和服务端)

    理解AndroidPn框架需要掌握网络编程、Android应用开发、服务器端编程以及数据安全等相关知识。开发者需要熟悉Android SDK,Java或Kotlin编程,以及可能涉及到的后端技术。通过学习和实践,开发者可以创建出稳定、...

    androidpn tomcat + oracle 版本

    这里我们关注的是一个特定的配置——"androidpn tomcat + oracle 版本"。这个配置涉及到AndroidPN服务在Tomcat应用服务器上运行,并与Oracle数据库进行集成。让我们深入探讨这个主题,了解其中涉及的关键知识点。 ...

    Androidpn tomcat版本

    AndroidPN(Android Push Notification)是一个开源项目,旨在为Android应用程序提供简单、高效的后台推送通知服务。这个项目通常需要与服务器端的组件配合工作,其中Tomcat作为常用的Java应用服务器,常常被用于...

    著名的AndroidPN消息推送客户端

    AndroidPN(Android Push Notification)是一种基于XMPP(Extensible Messaging and Presence Protocol)协议的开源消息推送客户端,主要用于Android平台。XMPP是一种开放标准的即时通讯协议,它允许应用程序通过...

    AndroidPn客户端和服务端

    Androidpn客户端 和服务端源码下载,实现了消息推送。具体使用方法可百度。

    androidpn_tomcat整合(发布直接使用)

    在Android开发中,AndroidPN(Android Push Notification)是一种常见的服务,用于实现在服务器端向Android设备推送消息。本文将深入探讨如何将AndroidPN-server与Tomcat应用服务器进行整合,以便在MyEclipse环境中...

    Android推送框架 androidpn.doc

    AndroidPN(Android Push Notification)是一个基于XMPP协议的开源Android推送通知实现,它包括了客户端和服务器端的完整实现。XMPP(Extensible Messaging and Presence Protocol)是一种用于即时通信和在线状态的...

    androidpn基于Xmpp的消息推送源码.zip

    androidpn服务器端也是java语言实现的,基于openfire开源工程,它的Web部分采用的是spring框架。Androidpn服务器包含两个部分,一个是侦听在5222端口上的XMPP服务,负责与客户端的XMPPConnection类进行通信,作用是...

    androidpn和javaee集成

    将androidpn集成到我们平时开发的javaee中,直接启动tomcat就可以启动xmpp服务,不需要另外部署androidpn。 注释:项目有点大,所以没有上传jar包,可以直接使用项目中的maven下载所需jar文件

    androidPN源码eclipse tomcat版本

    AndroidPN(Android Push Notifications)是专门为Android平台设计的一个推送通知服务。这个源码包包含了在Eclipse集成开发环境中运行的项目,以及与Tomcat服务器配合使用的部分。在深入讲解相关知识点之前,先来...

    androidpn—demo

    "AndroidPN—Demo"是一个基于Android平台的推送通知服务示例项目,主要展示了如何实现设备的登录、连接以及接收远程推送消息的功能。AndroidPN(Android Push Notification)是一种服务,允许开发者向他们的Android...

    androidpn-client-0.5.0

    "AndroidPN-client-0.5.0"是一个针对Android平台的Push Notification服务的客户端库,主要功能是为了实现设备与服务器之间的即时通信。Push Notification服务在移动应用开发中扮演着重要角色,它允许服务器向已安装...

Global site tag (gtag.js) - Google Analytics