如题,最近一个项目需要一个后台进程不间断的等待push信息或者其它信息,用broadcast receiver 做了一部分启动进程的
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
<action android:name="android.intent.action.USER_PRESENT"></action>
用了这两个,一个在开机时启动,一个在解锁后启动(目前只知道这两个是在配置文件有效的,而且属于用户常用操作),但是如果用户在玩手机,或者看视频没触发解锁操作就没办法了。
可是看到微信,QQ,微博的双进程却不被影响,想问问他们是通过什么方式来启动进程的?
如果代码很长解释下原理就可以,我有点想不明白
长轮训,或者说被动轮训。
我是这么做的。
有一个Receiver是专门用来启动/通知服务,告诉他改查询/做某些事情了,这个Receiver被注册给AlarmManager中,定时被调用。
如果AlarmManager中得定时或者整个服务被停掉了,这两个比如BOOT_COMPLETED就会在启动的时候再出发Receiver继续启动服务。