Android有个让人赞赏的特征:实时的同步。

1)如果你有新的Gmail邮件,手机可以马上收到邮件通知,这个中间可能有2,3秒的延迟,一般感觉还是很及时的;

2)如果你的联系人和Google Contanct是关联的话,你用桌面浏览器访问Gmail,修改联系人信息,很快新的联系人信息就会同步到你手机上。

最简单的实现可能用轮询(Polling)了,但这种方式有缺点:一则增大服务器的负担,想想如果每个客户端每隔半小时访问服务器,而大多数情况下 服务器是没有更新数据的,对比起来服务器的负担就很浪费了,半小时的时间又很难做到实时的更新…;二则对于手机这种客户端,轮询浪费电源这个手机最宝贵的 资源。

解决的方式是长连接,有好几种,这里讲的比较全面:超越轮询?考虑PubSub、Push和MOM 。也可用类似Comet的长连接,而Android里面用的是XMPP。

当运行了上面的第二种操作后,在logcat里面可以看到如下log:
11-02 21:45:08.706: DEBUG/Smack/Packet(148): [READ] <message id=”xL62aX-26″ stanza-id=”269508591457″ to=”fkpwolf@gmail.com/androidfCv23kaFEJQd0Mc” from=”gmail.com” type=”headline”><data xmlns=”google:mobile:data” category=”GSYNC_TICKLE” token=”http://www.google.com/m8/feeds/contacts/fkpwolf@gmail.com/base2_property-android” from-trusted-server=”true”><app-data key=”account” value=”fkpwolf@gmail.com” /></data></message>

网上查找一番后会发现Smack是XMPP一个比较流行的客户端lib,而这里面的message正是XMPP一种类型为headline的消息, 为通知类的消息,而聊天的则为chat类型。虽然Smack是开源的,Android里面的这部分做的很private,search代码没有任何发现。 Google虽然不做恶,但是也不是做善事的。

剩下部分请移步这里:http://www.fkpwolf.net/2009/11/15/android%e4%b8%8a%e7%9a%84push-notification%e5%92%8cxmpp2/

更多相关文章

  1. Android重力感应示例 .
  2. 知乎 Android(安卓)客户端三方库敏感代码扫描机制 - FindDanger
  3. Android用户也能幸福爆棚
  4. 描述下IOS和android系统流畅度的差别
  5. [置顶] Android(安卓)显示手机电池的当前电量
  6. 直接用 Chrome 扩展来回复 Android(安卓)手机上的短信 | 谷奥—
  7. 别老说要买 iPhone6,三分钟就让你手机价值飙升
  8. 使用adbWireless无线调试Android真机设备
  9. Android与iPhone的对比(水木上看到的,不清楚原文来源)

随机推荐

  1. android Makefile
  2. Android(安卓)UI设计——EditText控件
  3. android:configChanges
  4. 初探Android
  5. android 快速入门之一 “Hello world”,以
  6. 在android的Browser中设置User Agent
  7. Android(安卓)-- java代码设置margin
  8. android UI小结(二)
  9. Android(安卓)JNI环境搭建及开发入门
  10. Android概述