- 1、本文档共38页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android系统Activity窗口启动过程
在Android系统中,一个Activity对应一个应用程序窗口,任何一个Activity的启动都是由AMS服务和应用程序进程相互配合来完成的。AMS服务统一调度系统中所有进程的Activity启动,而每个Activity的启动过程则由其所属进程来完成。AMS服务通过realStartActivityLocked函数来通知应用程序进程启动某个Activity:frameworks/base/services/java/com/android/server/am/ ActivityStack.javafinal boolean realStartActivityLocked(ActivityRecord r,ProcessRecord app, boolean andResume, boolean checkConfig)throws RemoteException {...//系统参数发送变化,通知Activityif (checkConfig) {①Configuration config = mService.mWindowManager.updateOrientationFromAppTokens(mService.mConfiguration,r.mayFreezeScreenLocked(app) ? r.appToken : null);mService.updateConfigurationLocked(config, r, false, false);}//将进程描述符设置到启动的Activity描述符中r.app = app;app.waitingToKill = null;//将启动的Activity添加到进程启动的Activity列表中int idx = app.activities.indexOf(r);if (idx 0) {app.activities.add(r);}mService.updateLruProcessLocked(app, true, true);try {...//通知应用程序进程加载Activity②app.thread.scheduleLaunchActivity(new Intent(ent), r.appToken,System.identityHashCode(r), ,new Configuration(mService.mConfiguration),pat, r.icicle, results, newIntents, !andResume,mService.isNextTransitionForward(), profileFile, profileFd,profileAutoStop);...} catch (RemoteException e) {...}if (mMainStack) {mService.startSetupActivityLocked();}return true;}AMS通过realStartActivityLocked函数来调度应用程序进程启动一个Activity,参数r为即将启动的Activity在AMS服务中的描述符,参数app为Activity运行所在的应用程序进程在AMS服务中的描述符。函数通过IApplicationThread代理对象ApplicationThreadProxy通知应用程序进程启动r对应的Activity,应用程序进程完成Activity的加载等准备工作后,AMS最后启动该Activity。启动Activity的创建等工作是在应用程序进程中完成的,AMS是通过IApplicationThread接口和应用程序进程通信的。r.appToken 在AMS服务端的类型为Token,是IApplicationToken的Binder本地对象。frameworks/base/core/java/android/app/ ActivityThread.javapublic final void scheduleLaunchActivity(Intent intent, IBinder token, int ident,ActivityInfo info, Configuration curConfig, CompatibilityInfo compatInfo,Bundle state, ListResultInfo pendingResults,ListIntent pendingNewIntents, boolean notResumed, boolean isForward,String profileName, ParcelFileDescriptor profileFd, boolean autoStopP
您可能关注的文档
最近下载
- 国家开放大学学前教育科研方法大作业答案.docx
- 配电工程 投标方案(技术方案).docx
- 2023年11月金华十校2024届级高三一模历史试卷(含答案).docx
- 2024《教育科学研究项目课题设计论证》:大班幼儿入学准备主题课程构建的实践研究7400字.doc
- 机电应用技术专业典型案例——校企融合、实景教学办学模式的创新.docx VIP
- 丙型肝炎病毒实验室检测技术规范(2023年修订版).pdf
- 中国客票销售发展模式论文.pdf
- 广东省茂名市电白区2023-2024学年七年级上学期期中数学试卷.pdf VIP
- 国家开放大学《管理英语4》边学边练Unit 5-8(答案全).docx VIP
- 《烹饪美学》 第四章 菜点造型艺术.pptx
文档评论(0)