当前位置: 代码迷 >> Android >> Android服务的启动有关问题(来者有分)
  详细解决方案

Android服务的启动有关问题(来者有分)

热度:45   发布时间:2016-05-01 13:26:43.0
Android服务的启动问题(来者有分)
各位兄弟,有个疑问,在Andoid里面除了xxx.rc里面启动服务外,其他服务是怎么启动的?主要说的是SystemServer.java文件ServerThread里面的,比方说电源管理,越详细越好,谢谢!

------解决方案--------------------

------解决方案--------------------
调用底层的库吧,c写的
------解决方案--------------------
好像要在framwork层实现
------解决方案--------------------
不懂,看源码有这么些内容

1.在ServerThread类的run中,把电源服务类BatteryService添加到服务管理器中。
Slog.i(TAG, "Battery Service");
battery = new BatteryService(context);
ServiceManager.addService("battery", battery);

2.BatteryService类主要有以下几个方法
2.1 isPowered,判断是否插入交流电源或者usb,执行充电处理
2.2 getBatteryLevel取得电量,0-100
2.3 shutdownIfNoPower,没电时关机
2.4 shutdownIfOverTemp,温度过高时关机,>68.0摄氏度
2.5 update,更新
2.6 sendIntent,广播电池状态
2.7 getIcon,取得状态图标
------解决方案--------------------
rc里的服务一般是底层的服务,调用一些bin或者sh的文件来执行。
还有一种系统服务是java文件实现的。一般在framwork/base/下会有service的代码。
网上应该有很多类似的资料,有同事很早就做过类似的开发了。
不过电源的管理范围很大,不知道楼主是要实现什么功能。是做省电方面的管理还是只是读取电池数据?
------解决方案--------------------

------解决方案--------------------
上层应用(.java)->

JNI调用(.cpp)->

*.conf->

.c->kernel驱动

以上是简略图,呵,大部分应用和底层驱动的链接是这种模式,具体情况具体分析
------解决方案--------------------
探讨
我只是想知道一下这些个服务是怎么起来的,可能是我的理解有些误区,对服务的理解不准确吧!总以为这些服务会有底层的库支持,但是有些服务,例如电源管理应该不只是启动一个库那么简单,它涉及到整个硬件,它需要操作的东西都已经在系统起来就起来了的,这个服务本身不需要启动什么,是吗?
我不知道自己这么理解对不对。
  相关解决方案