`

Androidpn源码分析(3)

阅读更多

从Androidpn客户端程序入口DemoAppActivity开始。DemoAppActivity里最核心的就是下面这两句了。

 

[html] view plaincopy
 
  1. ServiceManager serviceManager =new ServiceManager(this);  
  2. serviceManager.startService();  

 

打开ServiceManager类源文件,可以看到,构造函数完成了将服务器地址、端口等配置信息写到Preferences的工作。而startService方法的代码如下:

 

[html] view plaincopy
 
  1. public void startService() {  
  2.       Thread serviceThread = new Thread(new Runnable() {  
  3.           @Override  
  4.           public void run() {  
  5.               Intent intent = NotificationService.getIntent();  
  6.               context.startService(intent);  
  7.           }  
  8.       });  
  9.       serviceThread.start();  

 

 

可以看到,它启动了NotificationService这个服务。服务这个东西,多次start并不会产生多个实例,并且除非有进程stop它,否则它不会停止。所以第一次应用程序启动后,这个服务就运行在那里了,即使退出应用程序,客户端还可以接收到服务器端发来的消息。 

打开NotificationService类,继续看代码。

 

[html] view plaincopy
 
  1. deviceId =telephonyManager.getDeviceId();  

 

它取得了设备的ID,但好像并没有真正使用过它。

然后,

 

[html] view plaincopy
 
  1. xmppManager = new XmppManager(this);  
  2.    
  3.         taskSubmitter.submit(new Runnable() {  
  4.             public void run() {  
  5.                 NotificationService.this.start();  
  6.             }  
  7.         });  

 

现在,马上就要连接服务器了。跟踪一下NotificationService.this.start方法,就可以看到,它依次执行了connect(连接)、register(注册)、login(登录)三个动作。

 

Connect 就是建立与服务器端的长连接了。

Register就是客户端提交用户名密码注册。我们找到XmppManager类中的RegisterTask类。它先通过查看手机的Preferences里有没有用户名和密码字段来判断用户是否注册,如果没有注册,它就生成随机用户名密码发过去注册。所以,如果程序运行过一次之后,你还想换个用户名密码登录是不行的,除非你在更换用户之前清除掉Preferences里的用户名密码两个属性值。另外再提一点,服务器端不支持同一用户名多次注册的,所以如果你想做账号多点同时在线的话,要么改androidpn的服务器端,要么自己得动点脑筋。 

最后,登录完成后,当服务器端发来消息时,NotificationReceiver 类就该上阵了。你希望收到消息后做什么处理,就来修改它的onReceive方法。默认的,它调用Notifier类的notify方法来给出一条通知。

 

from http://blog.csdn.net/nairuohe/article/details/7061852

分享到:
评论

相关推荐

    androidPN源码eclipse tomcat版本

    以上就是关于"androidPN源码eclipse tomcat版本"的主要知识点。了解并掌握这些内容,你就能有效地实现一个简单的推送通知服务。在实际开发过程中,可能还需要考虑安全性、性能优化以及兼容性等问题。

    AndroidPN源码

    **四、AndroidPN源码分析** AndroidPN的源码可以帮助开发者理解如何实现一个完整的推送服务。通过阅读`PushService`、`PushReceiver`、`PushServerSync`等相关类,可以学习到如何创建后台服务、如何处理广播接收器...

    Androidpn源码

    源码分析可以揭示如何实现高效、可靠的消息队列。 3. **推送服务**:服务器端有一个后台服务,定时检查消息队列并尝试发送消息。这部分可能涉及到多线程和异步处理,确保消息能够及时、准确地发送到目标设备。 4. ...

    androidpn服务端项目源码已修改

    总的来说,这个修改过的AndroidPN服务端项目源码为开发者提供了一次学习和实践推送通知服务的机会,通过分析和理解代码,可以提升Android应用的实时通信能力和后台服务的构建技能。同时,对于想要自建推送服务的...

    androidpn 消息推送 服务器端源码

    在实际应用中,开发者可以根据自身需求,对AndroidPN服务器端源码进行定制,比如增加消息分类、统计分析功能,或者对接其他后台系统。通过对源码的深入学习和实践,开发者不仅可以掌握Android消息推送的核心技术,还...

    Android推送框架 androidpn

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

    androidpn消息推送源码

    7. **学习和实践**:分析和研究AndroidPN的源码,可以帮助开发者深入理解XMPP协议的工作原理,以及在Android平台上实现消息推送服务的具体步骤。通过修改和扩展源码,可以定制自己的推送服务,满足特定的应用场景...

    about androidPN

    【AndroidPN】是一个开源的Android推送通知服务,它基于XMPP协议,由Java编写,提供了一种可扩展的方案,让服务器能够向Android客户端...开发者可以通过理解和定制AndroidPN源码,根据自身需求构建更个性化的推送服务。

    androidpn

    由于描述中没有给出详细信息,我们将根据标签和可能的源码分析来探讨相关知识点。 1. **Android 应用程序架构**: 在Android平台上,开发者通常使用Activity、Service、BroadcastReceiver和ContentProvider这四大...

    androidpn-client 0.5 推送

    **三、源码分析** 在"androidpn-client-0.5.01111"源码包中,我们可以找到以下几个关键模块: 1. **MainActivity**:主活动类,启动客户端并处理用户交互。 2. **PushManager**:推送管理器,负责客户端的注册、...

    androidpn-client

    在"androidpn-client"的源码中,我们可以学习到如何在Android应用中实现上述功能,包括使用Socket编程、线程管理、JSON解析、Android服务和广播接收器等技术。此外,对于希望深入理解Android推送通知机制或者想要...

    anroid完美实现 push推送 源码奉送

    3. **源码分析**: - `androidpn-client-0.5.0.zip` 包含了AndroidPN的客户端源码,开发者可以深入研究其中的网络连接、消息解析和推送处理等逻辑。 - `androidpn-server-0.5.0-src.zip` 提供了服务端的源代码,有...

    MyPushManager源码

    通过分析MyPushManager的源码,我们可以学习到如何在Android环境中建立稳定的长连接,如何解析和处理JSON数据,以及如何设计服务以适应不同网络环境和用户需求。这对于我们开发自己的消息推送系统或优化现有推送服务...

    Android 基于XMPP协议IM聊天实现(客户端+服务端) 源码

    3. **AndroidPN(Android Push Notification)**: AndroidPN是Android平台上的推送通知服务,它可能在本示例中用于实现实时推送通知,即使应用程序在后台运行也能收到新消息。AndroidPN使用Google Cloud Messaging...

    android IM

    android smack源码分析——接收消息以及如何解析消息: http://www.cnblogs.com/not-code/archive/2011/08/01/2124340.html MTQQ http://www.cnblogs.com/charley_yang/archive/2011/03/27/1997938.html ...

    android客户端分析

    **二、源码分析** 1. **初始化与服务启动** 在程序的入口类`DemoAppActivity`中,首先创建了一个`ServiceManager`实例,然后调用`setNotificationIcon()`设置通知图标,并通过`startService()`启动消息接收服务。`...

    asmack源码(asmack-android-18-source-0.8.9)

    综上所述,asmack-android-18-source-0.8.9源码包为开发者提供了深入了解和定制XMPP通信功能的机会,通过阅读和分析源码,开发者可以更好地理解和优化其在Android应用中的使用。同时,这个版本的源码也反映了特定...

    andoidpn官网服务器、客户端全部数据

    这里提到的“andoidpn官网服务器、客户端全部数据”,包含的应该是AndroidPN项目的服务器端代码、客户端应用源码以及可能的配置文件、数据库脚本等,还有提供的一个apk文件,可能是编译后的AndroidPN客户端应用。...

    基于XMPP实现android客户端与服务器的交互(服务器、客户端源码)

    描述中的“源码”提示我们,这个压缩包可能包含了实现这一功能的服务器和客户端的源代码,这对于开发者来说是宝贵的资源,可以直接学习和修改以适应自己的项目需求。 标签“android xmpp”进一步确认了我们讨论的...

    Android消息推送

    本文将深入探讨Android消息推送的相关知识点,包括其工作原理、实现方式以及相关源码分析。 1. **消息推送工作原理** - **GCM/FCM**:Google Cloud Messaging已被Firebase Cloud Messaging取代,FCM是Google提供的...

Global site tag (gtag.js) - Google Analytics