frameworks/base/services/java/com/android/server
System Server是android 基本服务的提供者,是android系统运行的最基本需求,所有service运行在一个叫system_server的进程中,system_server进程是android java虚拟机跑的第一个进程,从Zygote 创建而来,是andorid系统最重要的java虚拟机。可以说,整个android系统的业务都是围绕system server而展开,所以,当system_server死掉了,手机必须重启。
从Zygote创建system_server进程时,便实例化了该类
因此在android的启动过程中位于zygote之后。android的所有服务循环都是建立在 SystemServer之上的。在SystemServer中,将可以看到它建立了android中的大部分服务,并通过ServerManager的add_service方法把这些服务加入到了ServiceManager的svclist中。从而完成ServcieManager对服务的管理。
public static void main(String[] args){
new SystemServer.run();
}
private void run(){
try{
//run方法将会对整个系统的Service做初始化,搭建完运行时环境和上下文
//创建消息队列,家在native lib库
Looper.prepareMainLooper();
System.loadLibrary("android_servers");
performPendingShutdown();
//创建ActivityThread初始化系统context
createSystemContext();
//创建SystemServiceManager负责创建启动管理系统服务
mSystemServiceManager = new SystemServiceManager(mSystemContext);
//创建系统服务管理者并添加到本地服务
mSystemServiceManager.setStartInfo(mRuntimeRestart);
LocalServices.addService(SystemServiceManager.class, mSystemServiceManager);
SystemServerInitThreadPool.get();
... ...
try{
}
}
android.os.trace:
android.os.SystemProperties:设置或取得系统属性
android属性值是以键值对的形式存在的,一般放在system.prop,build.prop,default.prop等
SystemProperties.get("ro.android.myprop")可返回属性对应的key
private void createSystemContext(){
ActivityThread activityThread = ActivityThread.systemMain();//得到ActivityThread对象
mSystemContext = activityThread.getSystemContext();
mSystemContext.setTheme(DEFAULT_SYSTEM_THEME);
final Context systemUiContext = activityThread.getSystemUiCOntext();
systemUiContrext.setTheme(DEFAULT_SYSTEM_THEME);
}
android.app.ActivityThread