android-利用broadcast双程序相互监控保证目标程序运行
功能需求是,一个主程序app,另外一个监控程序app。监控app的目的是为了主程序app不会宕掉,而主程序app也要保证监控程序app不会宕掉。
利用跨进程的自定义广播来实现,要定义如下几个广播Main_APP_BC,Main_APP_BC_ACK以及SUB_APP_BC,SUB_APP_BC_ACK。机制如下:主程序app和监控app分别定时发送Main_APP_BC和SUB_APP_BC广播,相应的如果监控app和主程序app分别收到Main_APP_BC和SUB_APP_BC广播之后,会分别回复Main_APP_BC_ACK和SUB_APP_BC_ACK,如果一段时间内没有收到对方回应的广播认为对方宕掉了,利用包名和类名(已经知道)去启动另外一个app。测试过程中:应答广播的回复通常很快小于1s,非正常情况(原因不详)会有超过30s才收到广播的情况,所以可以等待回应广播的时间可以适当增长。
以其中一个app的service中的流程为例,流程图如下图:
实测使用android系统设置-强制关闭其中一个app,另外一个app都会利用这种机制,使其启动。