-
Notifications
You must be signed in to change notification settings - Fork 1.2k
消息通知
四次元没有推送,只有定时拉取数据
AppNewMsgAlarm 设定定时任务
FetchNewMsgService 拉取数据,然后发送2套广播
AppEventAction.NEW_MSG_PRIORITY_BROADCAST 有权限判定的广播
AppEventAction.NEW_MSG_BROADCAST 普通的广播
NEW_MSG_PRIORITY_BROADCAST 本意是拿来拦截用,MainTimeLineActivity 设定一个高权限的 Receiver,在用户打开应用后拦截广播,或者在 ActionBar 做消息提示之类的(未完成),在用户离开应用后,交由 UnreadMsgReceiver(权限比 MainTimeLineActivity 低)负责弹通知栏,因为现在没完成设计,所以实际上 MainTimeLineActivity 没拦截到,全交给 UnreadMsgReceiver 处理
NEW_MSG_BROADCAST 由 CommentsToMeTimeLineFragment(评论列表) MentionsWeiboTimeLineFragment(@的评论列表) MentionsCommentTimeLineFragment(@的微博列表) 3个列表,在 onResume 里面注册监听,收到消息后就在 Tab 上显示有多少未读消息,填充进列表,并向服务器清空未读数。
UnreadMsgReceiver 收到消息后,会将新的消息,总共3个类别,分别给 JBMentionsCommentNotificationServiceHelper、JBMentionsWeiboNotificationServiceHelper、JBCommentsToMeNotificationServiceHelper 3个 Service,交由他们负责显示通知栏
NotificationServiceHelper 在启动后,会判断是否有多条消息,如果是,就给 Notification 添加按钮(“下一条”),让用户在通知栏就可以读遍消息
点击通知栏后,会进入 MainTimeLineActivity,MainTimeLineActivity 将未读的消息保存在 Intent。这时,MentionsTimeLine和CommentsTimeLine的 onResume 会判断是哪个通知进行的,然后切换到那个页面。
随后,CommentsToMeTimeLineFragment(评论列表) MentionsWeiboTimeLineFragment(@的评论列表) MentionsCommentTimeLineFragment(@的微博列表) 3个列表会在 onResume和读取数据库完成后检查 Intent 里面是否有未读的消息,有就填充再清掉 Intent,然后向服务器清空未读数。