AMS笔记

ActivityManagerService

概念:ActivityManagerService是android系统中非常重要的服务(AMS机制和WMS机制是android中最复杂的)
ams的作用是用来管理四大组件内存进程调度的。

AMS机制中重要的类:

1.ProcessRecord: 表示一个进程信息,包括该进程里的Activity和service等信息

代码摘抄,省掉了很多。
activity启动,在ams机制中最终调用的方法:(ActivityStackSupervisor)

void startSpecificActivityLocked(ActivityRecord r,  // 前面的知识,ActivityRecord在ams机制中代表一个activity
        boolean andResume, boolean checkConfig) {

    //判断activity的进程是否存在,ProcessRecord在ams机制中代表一个进程
    ProcessRecord app = mService.getProcessRecordLocked(r.processName,
            r.info.applicationInfo.uid, true);

    //进程存在的情况
    realStartActivityLocked(r, app, andResume, checkConfig);

    //进程不存在的情况
    mService.startProcessLocked(r.processName, r.info.applicationInfo, true, 0,
            "activity", r.intent.getComponent(), false, false, true);

}

service启动,在ams机制中最终调用的方法:(ActiveServices)

private String bringUpServiceLocked(ServiceRecord r, int intentFlags, boolean execInFg, //前面的知识,ServiceRecord在ams机制中代表一个service
        boolean whileRestarting, boolean permissionsReviewRequired)
        throws TransactionTooLargeException {

    //判断service的进程是否存在,ProcessRecord在ams机制中代表一个进程
    ProcessRecord app = mAm.getProcessRecordLocked(procName, r.appInfo.uid, false);

    //进程存在的情况
    app.addPackage(r.appInfo.packageName, r.appInfo.versionCode, mAm.mProcessStats);
    realStartServiceLocked(r, app, execInFg);

    //进程不存在的情况
    if ((app=mAm.startProcessLocked(procName, r.appInfo, true, intentFlags,
                hostingType, r.name, false, isolated, false)) == null) {...

}

Broadcast启动,在ams机制中最终调用的方法:(BroadcastQueue)

final void processNextBroadcast(boolean fromMsg) {

    //判断Broadcast的进程是否存在,ProcessRecord在ams机制中代表一个进程
    ProcessRecord app = mService.getProcessRecordLocked(targetProcess,
            info.activityInfo.applicationInfo.uid, false);

    //进程存在的情况
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值