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

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

ActivityManagerService

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

引言: 由于上節我們知道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
亚洲午夜未满十八勿入免费观看全集| 欧美精品久久一区二区| 久久久免费电影| 91精品在线观看视频| 日韩在线视频线视频免费网站| 精品久久久久人成| 午夜美女久久久久爽久久| 久久影视电视剧免费网站清宫辞电视| 欧美黑人巨大精品一区二区| 国产精品成av人在线视午夜片| 日韩在线观看成人| 久久色在线播放| 国产精品黄页免费高清在线观看| 亚洲午夜久久久久久久| 欧美激情综合亚洲一二区| 一本色道久久88亚洲综合88| 9.1国产丝袜在线观看| 欧美精品videos性欧美| 久久久成人的性感天堂| 欧美一级片久久久久久久| 成人福利视频网| 黄色精品在线看| 91中文字幕在线| 国产噜噜噜噜噜久久久久久久久| 国产精品麻豆va在线播放| 91精品国产色综合久久不卡98| 2019中文字幕在线免费观看| 国产成人精品视频在线| 久久久中精品2020中文| 欧美国产一区二区三区| 亚洲精品99久久久久中文字幕| 欧美精品在线极品| 97精品久久久| 国产精品网站视频| 黄色成人av网| 久久伊人免费视频| 欧美午夜美女看片| 色中色综合影院手机版在线观看| 欧美激情综合色| 日本高清视频精品| 亚洲欧美资源在线| 亚洲欧美三级伦理| 久久久久久高潮国产精品视| 精品视频在线播放色网色视频| 欧美精品一二区| 国产精品盗摄久久久| 欧美视频在线免费看| 亚洲欧美国产日韩中文字幕| 黄色一区二区在线观看| 日韩欧美一区视频| 亚洲欧洲一区二区三区在线观看| 色一区av在线| 全球成人中文在线| 国产91在线播放九色快色| 久久天天躁夜夜躁狠狠躁2022| 精品国产91乱高清在线观看| 91精品国产色综合久久不卡98| 91精品久久久久久久久中文字幕| 亚洲精品美女在线| 日韩av一区在线观看| 国产色综合天天综合网| 欧美性极品xxxx做受| 亚洲人成在线观看| 欧美精品xxx| 国产日韩在线免费| 欧美一区二区影院| 亚洲最大福利视频| 久久久久亚洲精品| 亚洲高清色综合| 久久精品视频在线| 亚洲天堂第二页| 日韩av影院在线观看| 亚洲综合中文字幕在线| 日韩精品极品在线观看播放免费视频| 一本一本久久a久久精品牛牛影视| 欧美日韩国产一区二区| 亚洲最大的网站| 国产欧美韩国高清| 2019国产精品自在线拍国产不卡| 中文字幕亚洲字幕| 欧美激情亚洲精品| 两个人的视频www国产精品| 国产精品久久久久aaaa九色| 亚洲乱码国产乱码精品精| 国产免费一区视频观看免费| 亚洲国产精品小视频| 亚洲a一级视频| 国产日本欧美视频| 亚洲免费电影在线观看| 国产精品美腿一区在线看| 国产精品电影观看| 精品国产精品自拍| 成人性生交大片免费看小说| 欧美成人黑人xx视频免费观看| 26uuu国产精品视频| 91精品国产高清久久久久久| 久久精品中文字幕一区| 欧美中文在线观看国产| 亚洲男人天堂古典| 久久久久久91香蕉国产| 国精产品一区一区三区有限在线| 国产精品免费观看在线| 日韩精品久久久久久久玫瑰园| 57pao成人国产永久免费| 亚洲区在线播放| 中文字幕日韩欧美在线视频| 亚洲精品国产精品国自产观看浪潮| 一区三区二区视频| 亚洲电影第1页| 在线观看日韩www视频免费| 国产做受69高潮| 色噜噜狠狠色综合网图区| 欧美性生交xxxxx久久久| 2019亚洲日韩新视频| 91精品久久久久久久久久入口| 这里只有精品久久| 日韩大陆欧美高清视频区| 揄拍成人国产精品视频| 亚洲国产成人一区| 国产精品视频不卡| 国产精品99久久久久久白浆小说| 66m—66摸成人免费视频| 91av国产在线| 精品国产一区久久久| 精品在线小视频| 国产精品自产拍在线观看中文| 亚洲欧美日韩高清| 插插插亚洲综合网| 国产精品久久久一区| 国产欧美va欧美va香蕉在线| 欧美xxxx做受欧美| 亚洲精品福利资源站| 日韩视频在线免费观看| 国产精品美女无圣光视频| 国产成人精品日本亚洲| 欧美做受高潮电影o| 欧美日韩亚洲一区二区三区| 亚洲精品综合精品自拍| 色噜噜久久综合伊人一本| 国产91在线播放| 3344国产精品免费看| 国产日韩精品在线播放| 97精品国产aⅴ7777| 国产成人一区二区三区| 色小说视频一区| 91久久精品一区| 亚洲国产日韩欧美在线动漫| 国产精品久久久久999| 欧美一级在线亚洲天堂| 亚洲欧美国产精品久久久久久久| 日韩精品福利网站| 日韩电影免费观看在线| 国产精品视频大全| 国产一区二区香蕉| 亚洲成人黄色在线| 九九精品在线观看| 成人国产精品久久久久久亚洲| 欧美中文字幕在线播放| 国产视频丨精品|在线观看| 欧美日韩激情网| 国产在线日韩在线| 亚洲另类激情图| 日韩精品在线免费观看视频| 久久青草精品视频免费观看|