欢迎来到天天文库
浏览记录
ID:34464039
大小:25.67 KB
页数:8页
时间:2019-03-06
《将定制的launcher设置为默认》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Android如何将定制的Launcher成为系统中唯一的Launcher2011-01-1711:12如果你要定制一个Android系统,你想用你自己的Launcher(Home)作主界面来替换Android自己的Home,而且不希望用户安装的Launcher来替换掉你的Launcher.我们可以通过修改Framework来实现这样的功能。这里以Android2.1的源代码为例来实际说明。1)首先了解一下Android的启动过程。 Android系统的启动先从Zygote开始启动,然后……(中间的过程就不说了)…..一直到了SystemServer
2、(framework)这个地方,看到这段代码: /** *ThismethodiscalledfromZygotetoinitializethesystem.Thiswillcausethenative *services(SurfaceFlinger,AudioFlinger,etc..)tobestarted.Afterthatitwillcallback *upintoinit2()tostarttheAndroidservices. */ nativepublicstaticvoidinit1(String[]a
3、rgs); publicstaticvoidmain(String[]args){ if(SamplingProfilerIntegration.isEnabled()){ SamplingProfilerIntegration.start(); timer=newTimer(); timer.schedule(newTimerTask(){ @Override publicvoidrun(){ SamplingProfilerInteg
4、ration.writeSnapshot(“system_server”); } },SNAPSHOT_INTERVAL,SNAPSHOT_INTERVAL); } //Thesystemserverhastorunallofthetime,soitneedstobe //asefficientaspossiblewithitsmemoryusage. VMRuntime.getRuntime().setTargetHeapUtilization(0.8f); Syste
5、m.loadLibrary(“android_servers”); init1(args); } publicstaticfinalvoidinit2(){ Log.i(TAG,“EnteredtheAndroidsystemserver!”); Threadthr=newServerThread(); thr.setName(“android.server.ServerThread”); thr.start(); }}从SystemServer的main函数开始启动各种服务。首先启动init1,
6、然后启动init2.从上面的注释可以看到:init1这个方法时被Zygote调用来初始化系统的,init1会启动native的服务如SurfaceFlinger,AudioFlinger等等,这些工作做完以后会回调init2来启动Android的service。这里我们主要来关注init2的过程。init2中启动ServerThread线程,ServerThread中启动了一系列的服务,比如这些:ActivityManagerServiceEntropyServicePowerManagerServiceTelephonyRegistryPackage
7、ManagerServiceAccountManagerServiceBatteryServiceHardwareServiceWatchdogSensorServiceBluetoothServiceStatusBarServiceClipboardServiceInputMethodManagerServiceNetStatServiceConnectivityServiceAccessibilityManagerServiceNotificationManagerServiceMountServiceDeviceStorageMonitorSer
8、viceLocationManagerServiceSearchManagerServiceF
此文档下载收益归作者所有