欢迎来到天天文库
浏览记录
ID:38256421
大小:1.76 MB
页数:14页
时间:2019-06-06
《Android核心分析之AMS》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、[原]Android核心分析之AMS2015-2-27阅读661 评论0ActivityManagerService简称AMS,是Android内核的核心功能之一,在系统启动SystemServer时启动此服务。android框架:ActivityManager的组成主要分为以下几个部分: 1.服务代理:由ActivityManagerProxy实现,用于与Server端提供的系统服务进行进程间通信 2.服务中枢:ActivityManagerNative继承自Binder并实现IActivity
2、Manager,它提供了服务接口和Binder接口的相互转化功能,并在内部存储服务代理对像,并提供了getDefault方法返回服务代理 3.Client:由ActivityManager封装一部分服务接口供Client调用。ActivityManager内部通过调用ActivityManagerNative的getDefault方法,可以得到一个ActivityManagerProxy对像的引用,进而通过该代理对像调用远程服务的方法 4.Server:由ActivityManagerServic
3、e实现,提供Server端的系统服务框架图:AMS提供的功能主要包括以下几个方面: 1。对于Android四大组件(activityservicebroadcastcontentprovider)的管理,包括启动,生命周期管理等 2.进程OOMadj以级LRUweight管理AMS主要代码位于:frameworksbasecorejavaandroidappframeworksbaseservicesjavacomandroidserveram主要目录结构如下:AMS服
4、务启动是系统启动的init2阶段,由SystemServer启动的Java系统服务之一,启动代码位于frameworksbaseservicesjavacomandroidserverSystemServer.java中AMS服务在系统启动阶段的主要工作:1.调用main方法启动AMS服务 context= ActivityManagerService.main(factoryTest);2.调用SetSystemProcess方法ActivityManagerService。se
5、tSystemProcess();3.调用installSystemProviders方法ActivityManagerService.installSystemProviders();4.调用SystemReady方法 ActivityManagerService.self().systemReadymain方法介绍:启动AThread线程,创建ActivityManagerService 创建完毕后,调用ActivityThread的systemMain方法创建ActivityThread对像调
6、用ActivityThread对像的getSystemContext方法创建Context对像,初始化ActivityStack调用AMS的startRunning方法publicstaticfinalContextmain(intfactoryTest){AThreadthr=newAThread();thr.start();synchronized(thr){while(thr.mService==null){try{thr.wait();}catch(InterruptedExceptione
7、){}}}ActivityManagerServicem=thr.mService;mSelf=m;ActivityThreadat=ActivityThread.systemMain();mSystemThread=at;Contextcontext=at.getSystemContext();context.setTheme(android.R.style.Theme_Holo);m.mContext=context;m.mFactoryTest=factoryTest;m.mIntentFir
8、ewall=newIntentFirewall(m.newIntentFirewallInterface());//CHANGEDBYMARSBEGINm.mStackSupervisor=newcom.marvell.security.MrvlActivityStackSupervisor(m,context,thr.mLooper);//CHANGEdBYMARSENDm.mBatteryStatsService.publish(context);m.mUsage
此文档下载收益归作者所有