郭霖老师androidpn教学视频笔记

学习郭霖老师的“见证android消息推送时刻”的学习笔记。  视频见慕课网,然后搜索“见证android消息推送时刻”讲的真心好!


ServiceManager

属性:

方法:
startService():启动服务NotificationService
stopService():停止服务NotificationService
setAlias(String alias):设置别名
setTags(final List<String> tagsList):设置标签,即可根据标签进行推送
setNotificationIcon(int iconId):设置通知图标
viewNotificationSettings(Context context):查看通知设置,包括开机启动,震动,铃声等
流程:
调用startService()方法启动了NotificationService服务。

NotificationService继承自service
属性:
XmppManager
ExecutorService:一个按顺序执行的线程池
方法:
connect():调用xmppManager的connect()方法。
disconnect():调用xmppManager的disconnect()方法。
start():注册通知到来的广播接收器registerNotificationReceiver(),注册连接的广播接收器registerConnectivityReceiver()。调用xmppManager的connect()方法。
stop():解绑通知到来的广播接收器unregisterNotificationReceiver(),解绑连接的广播接收器unregisterConnectivityReceiver()。调用xmppManager的disconnect()方法。调用ExecutorService的销毁方法。
流程:
在oncreate()方法中调用start方法,即进行注册广播接收以及进行与服务端的连接。


XmppManager
属性:
XMPPConnection:asmack里面定义的一个类
ConnectionListener:asmack里面定义的一个类
PacketListener:asmack里面定义的一个类
方法:
流程:
1. 调用XMPPConnection的connect方法,会根据情况提交多个task:
a)未注册情况下:提交连接task,然后提交注册task,再提交登陆task。登陆成功之后,保持心跳连接。

b)已注册情况下:提交连接task,然后提交登陆task,登陆成功之后,保持心跳连接

在登陆成功之后,会调用

// packet filter
PacketFilter packetFilter = new PacketTypeFilter(
NotificationIQ.class);
// packet listener
PacketListener packetListener = xmppManager
.getNotificationPacketListener();
connection.addPacketListener(packetListener, packetFilter);

这个NotificationPacketListener就是接受消息的入口。

猜你喜欢

转载自blog.csdn.net/u012049463/article/details/50534395