把消息推送逻辑,封装成一个Service,并且运行于一个独立进程中,如下:
<service
android:name="com.habby.downloadprovider.notification.pushmessage.PushMsgService"
android:process="com.habby.pushmessage" >
</service>
并且在Application中启动,设计成单独进程的理由是:服务器推送消息要求App关闭的时候也能收到服务器推送消息,并且即使手机重启也必须能收到服务器消息推送(通过BroadcastReceiver监控手机重启广播事件,来再次启动消息推送Service)。
消息推送逻辑,本质就是在确定的时间通过http请求从服务器拉取推送消息交给Notification显示在任务栏上,这个确定时间是由服务器器返回的,开机或切换网络的时候都会主动向服务器拉取一次推送消息,然后就可以在服务器返回的时刻去请求下一次推送消息了。
这就是消息推送的本质。