亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ActivityManagerService

2019-11-09 13:44:22
字體:
來源:轉載
供稿:網友

引言: 由于上節我們知道SystemServer啟動了很多系統服務,當前也啟動了ActivityManagerService服務 所以我們這節內容就分析AMS的啟動過程以及在系統中承擔的角色.

@(晚輩目前還是在校大學生,所以可能又很多地方理解有偏差,所以希望前輩們不吝賜教)

ActivityManagerService的創建1startService2ActivityManagerServiceLifecycleclassAMSAMSonStartsetSystemPRocess

ActivityManagerService的創建

銜接上文: 在SystemServer的run方法中調用startBootstrapServices(),在其中:

// Activity manager runs the show. mActivityManagerService = mSystemServiceManager.startService( ActivityManagerService.Lifecycle.class).getService();//[1][2] //給AMS設置SystemServiceManager mActivityManagerService.setSystemServiceManager(mSystemServiceManager); mActivityManagerService.setInstaller(installer); ... mActivityManagerService.setSystemProcess();

1startService()

@(SystemServiceManager.java->startService())

通過反射調用構造 調用service.onStart()方法 public <T extends SystemService> T startService(Class<T> serviceClass) { try { final String name = serviceClass.getName(); ... final T service; try { Constructor<T> constructor = serviceClass.getConstructor(Context.class); service = constructor.newInstance(mContext); } ... mServices.add(service); // Start it. try { service.onStart();//針對AMS,則調用AMS的onStart()方法 } ... return service; } finally { ... } }

2ActivityManagerService.Lifecycle.class

@(SystemService的派生類)

內部持有AMS的對象,所以到目前為止AMS就創建出來了

public static final class Lifecycle extends SystemService { private final ActivityManagerService mService; public Lifecycle(Context context) { super(context); mService = new ActivityManagerService(context); } @Override public void onStart() { mService.start(); } public ActivityManagerService getService() { return mService; } }

AMS

@(AMS的構造方法)

創建出一些管理4大組件的管理對象.

// public ActivityManagerService(Context systemContext) { mContext = systemContext; mFactoryTest = FactoryTest.getMode(); //獲取ActivityThread對象的引用 mSystemThread = ActivityThread.currentActivityThread(); //創建一個HandlerThread mHandlerThread = new ServiceThread(TAG, android.os.Process.THREAD_PRIORITY_FOREGROUND, false /*allowIo*/); mHandlerThread.start(); mHandler = new MainHandler(mHandlerThread.getLooper()); //創建UI線程 mUiHandler = new UiHandler(); ... //創建用于管理廣播的數據結構 mFgBroadcastQueue = new BroadcastQueue(this, mHandler, "foreground", BROADCAST_FG_TIMEOUT, false); mBgBroadcastQueue = new BroadcastQueue(this, mHandler, "background", BROADCAST_BG_TIMEOUT, true); mBroadcastQueues[0] = mFgBroadcastQueue; mBroadcastQueues[1] = mBgBroadcastQueue; mServices = new ActiveServices(this);//創建管理Service的組件 mProviderMap = new ProviderMap(this);//創建管理provider的組件 mAppErrors = new AppErrors(mContext, this); // 創建一個/data/system的目錄 File dataDir = Environment.getDataDirectory(); File systemDir = new File(dataDir, "system"); systemDir.mkdirs(); //有關電池相關的服務操作 mBatteryStatsService = new BatteryStatsService(systemDir, mHandler); mBatteryStatsService.getActiveStatistics().readLocked(); mBatteryStatsService.scheduleWriteToDisk(); mOnBattery = DEBUG_POWER ? true : mBatteryStatsService.getActiveStatistics().getIsOnBattery(); mBatteryStatsService.getActiveStatistics().setCallback(this); //有關進程統計的服務 mProcessStats = new ProcessStatsService(this, new File(systemDir, "procstats")); mAppOpsService = new AppOpsService(new File(systemDir, "appops.xml"), mHandler); mAppOpsService.startWatchingMode(AppOpsManager.OP_RUN_IN_BACKGROUND, null, new IAppOpsCallback.Stub() { @Override public void opChanged(int op, int uid, String packageName) { if (op == AppOpsManager.OP_RUN_IN_BACKGROUND && packageName != null) { if (mAppOpsService.checkOperation(op, uid, packageName) != AppOpsManager.MODE_ALLOWED) { runInBackgroundDisabled(uid); } } } }); ... //有關cpu信息的初始化 mProcessCpuTracker.init(); mCompatModePackages = new CompatModePackages(this, systemDir, mHandler); mIntentFirewall = new IntentFirewall(new IntentFirewallInterface(), mHandler); //創建管理Activity的對象 mStackSupervisor = new ActivityStackSupervisor(this); mActivityStarter = new ActivityStarter(this, mStackSupervisor); mRecentTasks = new RecentTasks(this, mStackSupervisor); //創建一個線程名稱為CpuTracker,主要是做一些CPU有關的操作 mProcessCpuThread = new Thread("CpuTracker") { @Override public void run() { while (true) { try { try { synchronized(this) { final long now = SystemClock.uptimeMillis(); long nextCpuDelay = (mLastCpuTime.get()+MONITOR_CPU_MAX_TIME)-now; long nextWriteDelay = (mLastWriteTime+BATTERY_STATS_TIME)-now; if (nextWriteDelay < nextCpuDelay) { nextCpuDelay = nextWriteDelay; } if (nextCpuDelay > 0) { mProcessCpuMutexFree.set(true); this.wait(nextCpuDelay); } } } catch (InterruptedException e) { } updateCpuStatsNow(); } catch (Exception e) { Slog.e(TAG, "Unexpected exception collecting process stats", e); } } } }; ... }

AMS.onStart()

@(onStart())

private void start() { Process.removeAllProcessGroups();//Remove all process groups mProcessCpuThread.start();//Runtime CPU use collection thread //啟動cpu相關 mBatteryStatsService.publish(mContext); mAppOpsService.publish(mContext); LocalServices.addService(ActivityManagerInternal.class, new LocalService());}

setSystemProcess()

@(源于SystemService中startBootstrapServices()調用)

mActivityManagerService.setSystemProcess(); 主要是向ServiceManager注冊了一些服務,最后看出向AMS中把SystemServer自己添加到其中,所以AMS是管理這個系統進程的類.

public void setSystemProcess() { try { //將AMS添加到ServiceManager ServiceManager.addService(Context.ACTIVITY_SERVICE, this, true); //添加進程信息服務 ServiceManager.addService(ProcessStats.SERVICE_NAME, mProcessStats); //添加每個進程內存使用服務 ServiceManager.addService("meminfo", new MemBinder(this)); //添加每個進程圖形加速卡狀態服務 ServiceManager.addService("gfxinfo", new GraphicsBinder(this)); //db狀態服務 ServiceManager.addService("dbinfo", new DbBinder(this)); if (MONITOR_CPU_USAGE) { ServiceManager.addService("cpuinfo", new CpuBinder(this)); } ServiceManager.addService("permission", new PermissionController(this)); ServiceManager.addService("processinfo", new ProcessInfoService(this)); ... synchronized (this) { //把SystemServer進程本身添加到process管理中 ProcessRecord app = newProcessRecordLocked(info, info.processName, false, 0); app.persistent = true; app.pid = MY_PID; app.maxAdj = ProcessList.SYSTEM_ADJ; app.makeActive(mSystemThread.getapplicationThread(), mProcessStats); synchronized (mPidsSelfLocked) { mPidsSelfLocked.put(app.pid, app); } updateLruProcessLocked(app, false, null); updateOomAdjLocked(); } } catch (PackageManager.NameNotFoundException e) { throw new RuntimeException( "Unable to find android system package", e); } }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久综合av爱欲tv| 国产精品最新在线观看| 欧美国产视频一区二区| 久久久久久久久电影| 国产在线精品自拍| 中文字幕欧美国内| 91久久精品国产91久久| 26uuu久久噜噜噜噜| 欧美亚洲国产日本| 欧美高清不卡在线| 久久99国产综合精品女同| 91精品视频一区| 久久不射热爱视频精品| 亚洲激情在线观看视频免费| 欧美中文字幕在线| 粉嫩老牛aⅴ一区二区三区| 国产成人福利夜色影视| 成年无码av片在线| 亚洲深夜福利在线| 欧美巨乳在线观看| 狠狠躁夜夜躁人人爽天天天天97| 黑人精品xxx一区一二区| 91av中文字幕| 亚洲www在线观看| 在线观看欧美视频| 57pao国产成人免费| 国产视频精品久久久| 日韩最新在线视频| 亚洲九九九在线观看| 国产精品吴梦梦| 性欧美暴力猛交69hd| 亚洲2020天天堂在线观看| 国产精品96久久久久久又黄又硬| 欧美野外wwwxxx| 国产成人jvid在线播放| 久久精品青青大伊人av| 国产欧美日韩最新| 亚洲国产精品久久久| 欧美在线中文字幕| 亚洲网址你懂得| 日韩视频精品在线| 国产欧美精品一区二区三区介绍| 国产高清视频一区三区| 欧亚精品中文字幕| 国产欧美精品va在线观看| 精品久久久999| 欧美日韩美女在线| 久久精品国产亚洲精品| 成人美女av在线直播| 伊人久久久久久久久久久久久| 亚洲片国产一区一级在线观看| 久久久久久久av| 亚洲人成网站777色婷婷| 95av在线视频| 欧洲日韩成人av| 国产精品女人网站| 欧美激情亚洲激情| 日韩经典第一页| 色哟哟入口国产精品| 成人高h视频在线| 国产精品直播网红| 国产在线精品播放| 色与欲影视天天看综合网| 久久精品国产99国产精品澳门| 一区二区三区视频观看| 亚洲图片制服诱惑| 亚洲精品v天堂中文字幕| 亚洲影视中文字幕| 精品久久久久久久久久久久久久| 蜜月aⅴ免费一区二区三区| 色婷婷综合成人| 久久精品小视频| 久久免费精品日本久久中文字幕| 国产精品91免费在线| 国产精品色婷婷视频| 亚洲一级免费视频| 国产精品美女www爽爽爽视频| 日韩中文av在线| 亚洲高清一二三区| 97在线视频免费看| 国产精品久久久久久久一区探花| 美女黄色丝袜一区| 欧洲亚洲免费视频| 91天堂在线视频| 久久久久久久久久国产精品| 欧美三级欧美成人高清www| 亚洲视频在线观看视频| 日韩最新免费不卡| 日韩亚洲欧美中文高清在线| 欧美日韩国产999| 久久久久久久久久国产精品| 欧美最猛性xxxxx(亚洲精品)| 欧美极品少妇xxxxⅹ喷水| 精品五月天久久| 欧美激情精品久久久久久变态| 成人激情免费在线| 一级做a爰片久久毛片美女图片| 午夜精品蜜臀一区二区三区免费| 欧美性猛交xxxxx免费看| 青青在线视频一区二区三区| 国产精品永久免费| 欧美中文字幕在线视频| 中文字幕日韩欧美精品在线观看| 懂色av中文一区二区三区天美| 亚洲天堂av网| 国产日韩欧美黄色| 久久久久久久久久婷婷| 日韩精品免费在线视频| 日韩中文字幕久久| 国产在线拍偷自揄拍精品| 视频在线观看一区二区| 成人国产亚洲精品a区天堂华泰| 国产精品av免费在线观看| 国内精品在线一区| 亚洲最大福利网站| 国产精品电影在线观看| 国产精品久久久久久久av电影| 欧美成人午夜视频| 97碰在线观看| 精品一区二区三区三区| 亚洲自拍另类欧美丝袜| 亚洲欧美日韩中文在线| 欧美性一区二区三区| 日韩欧美成人网| 91精品国产91久久| 日韩av在线免费| 国产精品网红直播| 日韩免费高清在线观看| 日韩欧美在线第一页| 中文字幕日韩欧美| 国产精品久久久久久超碰| 欧美精品情趣视频| 久久综合免费视频影院| 亚洲国产成人久久综合| 中文字幕av一区二区| 最新国产精品亚洲| 国产欧美最新羞羞视频在线观看| 丝袜亚洲欧美日韩综合| 国语自产在线不卡| 亚洲精品一区中文字幕乱码| 狠狠久久亚洲欧美专区| 国产精品久久久久久久久久99| 亚洲成人av中文字幕| 国产精品久久久久久五月尺| 隔壁老王国产在线精品| 欧美日韩不卡合集视频| 国产精品狼人色视频一区| 国产精品欧美日韩| 国产日韩欧美另类| 国产精品青青在线观看爽香蕉| 国产日韩欧美自拍| 国产亚洲精品综合一区91| 亚洲综合自拍一区| 国产91精品久久久| 亚洲精品丝袜日韩| 91精品久久久久久久久久久久久| 97在线观看免费| 欧美精品aaa| 欧美三级xxx| 日韩欧美国产视频| 亚洲级视频在线观看免费1级| 成人国产精品色哟哟| 国产精品亚洲网站| 国产成人精彩在线视频九色|