SystemServer Serivce 启动 与 获取 (addService ,checkService )
? ? ? 在系统启动的时候,会做一系列初始化的工作包括service的创建。所以要了解系统中有多少种类的服务,每一类的服务都是如何实现的,这是一个最好的入口。这就直接从代码入手进行解析:
? ? ? 转载请注明(http://ishelf.iteye.com/blog/1027886)
? ? ? 首先在SystemServer的run方法中,有如下代码
?
public void onReceive(Context arg0, Intent arg1) { // 启动服务 Intent service = new Intent(arg0, MyService.class); arg0.startService(service); }
如果说广播监听是广播这个类被实例后才能监听的,那怎么监听系统开机的广播呢?开机前不可能实例好广播的这个类的吧
1.监听特定事件需要相关的服务广播该事件,也就是说相关服务要启动(你的.MybootReceiver肯定是在ActivityManagerService之后启动的)。如果是activity的话,也可以广播事件,不过生命周期有限,不能一直跑在后台,可能我在解释的时候没有提及activity所以导致误解。
2.你的Receiver只能说明你可以监听到boot完成的事件,怎么可以自启动呢。
3.你的监听事件是为了启动一个新的服务,而不是为了监听某一个服务所发出的事件。
====该没什么问题了吧。我两说的不是一回事了,呵呵 5 楼 busiying119 2011-05-18 ishelf 写道
1.监听特定事件需要相关的服务广播该事件,也就是说相关服务要启动(你的.MybootReceiver肯定是在ActivityManagerService之后启动的)。如果是activity的话,也可以广播事件,不过生命周期有限,不能一直跑在后台,可能我在解释的时候没有提及activity所以导致误解。
2.你的Receiver只能说明你可以监听到boot完成的事件,怎么可以自启动呢。
3.你的监听事件是为了启动一个新的服务,而不是为了监听某一个服务所发出的事件。
====该没什么问题了吧。我两说的不是一回事了,呵呵
谢~谢~楼~主啊~你的帖子促使我已经搞明白广播、启动服务、自定义广播,自动启动服务这些相关知识,不过我在真机上测试,xml配置的receiver是可以监听到boot完成的广播,然后启动我的服务的,从而达到开机自动启动服务的目的