郭霖老師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就是接受消息的入口。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章