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