您的位置:首页 > 职场人生

Android面试题-与xmpp相关面试题

2017-04-21 13:28 218 查看

本文配套视频

极光推送原理配套视频

xmpp基本概念配套视频

配套视频

源码分析相关面试题

Volley源码分析

注解框架实现原理

okhttp3.0源码分析

与XMPP相关面试题

与XMPP相关试题一

与XMPP相关试题二

与性能优化相关面试题

与性能优化相关面试题一

与性能优化相关面试题二

与性能优化相关面试题三

与性能优化相关面试题四

与性能优化相关面试题五

与性能优化相关面试题六

与IPC机制相关面试题

与登录相关面试题

oauth认证协议原理

token产生的意义

微信扫一扫实现原理

与开发相关面试题

迭代开发的时候如何向前兼容新旧接口

手把手教你如何解决as jar包冲突

context的原理分析

与人事相关面试题

人事面试宝典

4-简单阐述一下及时推送原理?

a) 传统获取服务器数据使用的是pull模式,是客户端向服务器请求数据。从客户端发起连接请求,获取到服务器数据后就关闭连接。当连接断开后,服务器就会失去客户端的地址,因此无法主动向客户端发送消息。

b) 推送(push)是服务主动向客户端发送数据。

它的原理是保持一个长连接,当客户端和服务器建立连接后不再断开,这样服务器随时有新消息都可以发送给客户端。

长连接和短连接。所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接。

while(true) {
  request(timeout);
  request(timeout);
}


短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,即每次TCP连接只完成一对

c) 至于如何获取推送消息。由于服务端传来推送消息的时间是不确定的,这里只能等待推送SDK的回调,比如通过注册监听或者广播接收者。不同的厂商的推送SDK可能会有不同的处理方案,以百度推送SDK来说,是通过广播接收者获取推送数据。

5-简要说明一下openfire、smack、spark

openfire是基于XMPP协议的即时通信的服务器端的一个实现,你不需要编写一行服务端的代码,实现一个简单的点对点通信或是简单的群聊.

smack 是XMPP传输协议的Java实现,提供了一套API接口 可以连接服务端。一般用于快速开发手机客户端。

spark是基于smack实现的一个XMPP即时通信客户端(PC端的)。

6-列出几种常见的解决消息即时获取方案

轮询(Pull)方式:客户端定时向服务器发送询问消息,一旦服务器有变化则立即同步消息。

SMS(短信消息)(Push)方式:通过拦截SMS消息并且解析消息内容来了解服务器的命令,但这种方式一般用户在经济上很难承受。

持久连接(Push)方式:客户端和服务器之间建立长久连接,这样就可以实现消息的及时行和实时性。

7-Timer比AlarmManager实现心跳时更耗电原因

一. Timer

Android 的 Timer 类可以用来计划需要循环执行的任务。

Timer 的问题是它需要用 WakeLock 让 CPU 保持唤醒状态,这样会大量消耗手机电量,

大大减短手机待机时间。这种方式不能满足我们的需求。

二. AlarmManager

AlarmManager 是 Android 系统封装的用于管理 RTC 的模块,RTC (Real Time Clock) 是一个独立的硬件时钟,可以在 CPU 休眠时正常运行,在预设的时间到达时,通过中断唤醒 CPU。这意味着,如果我们用 AlarmManager 来定时执行任务,CPU 可以正常的休眠,只有在需要运行任务时醒来一段很短的时间。

欢迎关注微信公众号,长期推荐技术文章和技术视频

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息