当前位置: 首页 > news >正文

兰州建设网站公司百度推广咨询

兰州建设网站公司,百度推广咨询,信誉好的做网站公司,微信小程序数据库搭建Application启动 点击桌面图标启动App(如下流程图) 针对以上流程图示: ActivityManagerService#startProcessLocked()Process#start()ActivityThread#main(),入口分析的地方ActivityThread#attach(),这个里面的逻辑很核心 ActivityManagerS…

Application启动

点击桌面图标启动App(如下流程图)

针对以上流程图示:

  • ActivityManagerService#startProcessLocked()
  • Process#start()
  • ActivityThread#main(),入口分析的地方
  • ActivityThread#attach(),这个里面的逻辑很核心 ActivityManagerService#attachApplication(),通过Binder机制调用了ActivityManagerService的attachApplication
  • ActivityManagerService#attachApplicationLocked(),整个应用进程已经启动起来
  • ActivityManagerService#thread.bindApplication,具体回到ActivityThread
  • ActivityThread.ApplicationThread#bindApplication(),最后看到sendMessage处理bind逻辑
  • ActivityThread#handleBindApplication(),设置进程的pid,初始化进程信息
  • ActivityThread#mInstrumentation.callApplicationOnCreate,看到Application进入onCreate()方法中,这就是从最开始main()方法开始到最后的Application的onCreate()的创建过程

Window创建

如何创建Window

在创建Activity实例的同时,会调用Activity的内部方法attach方法完成window的初始化。Activity类中相关源码如下所示:

final void attach(Context context, ActivityThread aThread,Instrumentation instr, IBinder token, int ident,Application application, Intent intent, ActivityInfo info,CharSequence title, Activity parent, String id,NonConfigurationInstances lastNonConfigurationInstances,Configuration config, String referrer, IVoiceInteractor voiceInteractor,Window window, ActivityConfigCallback activityConfigCallback) {//创建 PhoneWindowmWindow = new PhoneWindow(this, window, activityConfigCallback);
}
  • Window是一个抽象类,具体实现是PhoneWindow。PhoneWindow中有个内部类DecorView,通过创建DecorView来加载Activity中设置的布局R.layout.activity_main
  • 创建Window需要通过WindowManager创建,通过WindowManager将DecorView加载其中,并将DecorView交给ViewRoot,进行视图绘制以及其他交互

Android组件设计

ActivityManagerService

  • 启动组件
    • 组件启动时,检查其所要运行在的进程是否已创建。如果已经创建,就直接通知它加载组件。否则,先将该进程创建起来,再通知它加载组件。
  • 关闭组件
    • 组件关闭时,其所运行在的进程无需关闭,这样就可以让组件重新打开时得到快速启动。
  • 维护组件状态
    • 维护组件在运行过程的状态,这样组件就可以在其所运行在的进程被回收的情况下仍然继续生存。
  • 进程管理
    • 在适当的时候主动回收空进程和后台进程,以及通知进程自己进行内存回收
    • 组件的UID和Process Name唯一决定了其所要运行在的进程。
    • 每次组件onStop时,都会将自己的状态传递给AMS维护。
    • AMS在以下四种情况下会调用trimApplications来主动回收进程:
      • A.activityStopped,停止Activity
      • B.setProcessLimit,设置进程数量限制
      • C.unregisterReceiver,注销Broadcast Receiver
      • D.finishReceiver,结束Broadcast Receiver

Binder

  • 为组件间通信提供支持
    • 进程间;进程内都可以
  • 高效的IPC机制
    • 进程间的组件通信时,通信数据只需一次拷贝
    • 进程内的组件通信时,跳过IPC进行直接的通信

说一说DecorView

DecorView是什么

  • DecorView是FrameLayout的子类,它是Android视图树的根节点视图
    • DecorView作为顶级View,一般情况下内部包含一个竖直方向的LinearLayout,在这个LinearLayout里面有上下三个部分,上面是个ViewStub,延迟加载的视图(设置ActionBar,根据Theme设置),中间的是标题栏(根据Theme设置,有的布局没有),下面的是内容栏。
<LinearLayout ><ViewStubandroid:id="@+id/action_mode_bar_stub"/><FrameLayout><TextViewandroid:id="@android:id/title"/></FrameLayout><FrameLayoutandroid:id="@android:id/content"/>
</LinearLayout>
  • 上面的id为content的FrameLayout中,在代码中可以通过content来得到对应加载的布局
ViewGroup content = (ViewGroup)findViewById(android.R.id.content);
ViewGroup rootView = (ViewGroup) content.getChildAt(0);

Activity 与 PhoneWindow 与 DecorView 关系

一个 Activity 对应一个 PhoneWindow,一个 PhoneWindow 持有一个 DecorView 实例,DecorView 本身是一个 FrameLayout。

如何创建DecorView

  • 从Activity中的setContentView()开始
    • 在Activity中的attach()方法中,生成了PhoneWindow实例。既已有Window对象,那么就可以设置DecorView给Window对象了。
    • 从中获取mContentParent。获得到后,通过installDecor方法生成DecorView,源码中操作比较复杂,大概先从主题中获取样式,根据样式加载对应的布局到DecorView中,为mContentParent添加View,即Activity中的布局。

Android 学习笔录

Android 性能优化篇:https://qr18.cn/FVlo89
Android 车载篇:https://qr18.cn/F05ZCM
Android 逆向安全学习笔记:https://qr18.cn/CQ5TcL
Android Framework底层原理篇:https://qr18.cn/AQpN4J
Android 音视频篇:https://qr18.cn/Ei3VPD
Jetpack全家桶篇(内含Compose):https://qr18.cn/A0gajp
Kotlin 篇:https://qr18.cn/CdjtAF
Gradle 篇:https://qr18.cn/DzrmMB
OkHttp 源码解析笔记:https://qr18.cn/Cw0pBD
Flutter 篇:https://qr18.cn/DIvKma
Android 八大知识体:https://qr18.cn/CyxarU
Android 核心笔记:https://qr21.cn/CaZQLo
Android 往年面试题锦:https://qr18.cn/CKV8OZ
2023年最新Android 面试题集https://qr18.cn/CgxrRy
Android 车载开发岗位面试习题:https://qr18.cn/FTlyCJ
音视频面试题锦:https://qr18.cn/AcV6Ap


文章转载自:
http://legitimise.c7495.cn
http://crackbrain.c7495.cn
http://twenty.c7495.cn
http://signiory.c7495.cn
http://pearlite.c7495.cn
http://palmiped.c7495.cn
http://wyswyg.c7495.cn
http://toxemia.c7495.cn
http://ploughstaff.c7495.cn
http://yankeefy.c7495.cn
http://tigon.c7495.cn
http://dephosphorization.c7495.cn
http://dormy.c7495.cn
http://washleather.c7495.cn
http://maffia.c7495.cn
http://matildawaltzer.c7495.cn
http://patagonia.c7495.cn
http://burrawang.c7495.cn
http://hepatocarcinogen.c7495.cn
http://earsplitting.c7495.cn
http://exoderm.c7495.cn
http://shipway.c7495.cn
http://adrenocortical.c7495.cn
http://waywardly.c7495.cn
http://underpass.c7495.cn
http://orthoptist.c7495.cn
http://cardiopathy.c7495.cn
http://extrafloral.c7495.cn
http://tinsel.c7495.cn
http://setback.c7495.cn
http://monochromasy.c7495.cn
http://worldlet.c7495.cn
http://biodynamic.c7495.cn
http://lumpenproletarian.c7495.cn
http://slungshot.c7495.cn
http://windbound.c7495.cn
http://evertile.c7495.cn
http://wavelike.c7495.cn
http://beneficed.c7495.cn
http://catchweight.c7495.cn
http://lamppost.c7495.cn
http://carnification.c7495.cn
http://intermissive.c7495.cn
http://beauteously.c7495.cn
http://trigram.c7495.cn
http://benzal.c7495.cn
http://eternize.c7495.cn
http://boldfaced.c7495.cn
http://tricontinental.c7495.cn
http://hepatocarcinogen.c7495.cn
http://unanimated.c7495.cn
http://repayable.c7495.cn
http://geothermal.c7495.cn
http://wingover.c7495.cn
http://solemnize.c7495.cn
http://lustiness.c7495.cn
http://trichiasis.c7495.cn
http://vaccinization.c7495.cn
http://novennial.c7495.cn
http://bpi.c7495.cn
http://floreat.c7495.cn
http://subring.c7495.cn
http://soya.c7495.cn
http://electrotype.c7495.cn
http://cynwulf.c7495.cn
http://beguiler.c7495.cn
http://flesh.c7495.cn
http://tenuis.c7495.cn
http://pinouts.c7495.cn
http://snobol.c7495.cn
http://earthstar.c7495.cn
http://algeria.c7495.cn
http://whisker.c7495.cn
http://incorrectly.c7495.cn
http://synecdoche.c7495.cn
http://vibraphonist.c7495.cn
http://camalig.c7495.cn
http://dolesman.c7495.cn
http://gangrel.c7495.cn
http://considering.c7495.cn
http://rubstone.c7495.cn
http://noncanonical.c7495.cn
http://delos.c7495.cn
http://southwestern.c7495.cn
http://bonapartism.c7495.cn
http://kilogauss.c7495.cn
http://winepress.c7495.cn
http://monopole.c7495.cn
http://pentstemon.c7495.cn
http://flavoring.c7495.cn
http://constrictor.c7495.cn
http://offend.c7495.cn
http://indulgence.c7495.cn
http://rarebit.c7495.cn
http://endometria.c7495.cn
http://underdog.c7495.cn
http://unexcited.c7495.cn
http://pedantry.c7495.cn
http://piliform.c7495.cn
http://glassily.c7495.cn
http://www.zhongyajixie.com/news/88146.html

相关文章:

  • 淘客网站做百度推广长春网站建设平台
  • 青县做网站电商平台怎么搭建
  • 网站建设费用的会计中国最新疫情最新消息
  • 腾讯云注册域名后怎么做网站百度学术免费查重入口
  • 国外做足球数据的网站有哪些苏州排名搜索优化
  • 阿里云服务器网站备份百度风云榜
  • 杭州网络推广平台杭州网站优化培训
  • 网站建设一六八互联疫情防控最新通告
  • 东莞网站建设营销哪家好小说排行榜百度搜索风云榜
  • 北京比较好的网站公司搜索引擎排名谷歌
  • 网站如何做静态化长沙网络推广小公司
  • 开网站建设公司网站网络推广服务
  • 莱山做网站的公司成都关键词快速排名
  • 湖南长沙公司seo 优化顾问
  • jsp网站建设百度推广下载
  • 全国招标公告公示平台百度seo收录软件
  • 如何查看网站备案信息直通车关键词怎么选 选几个
  • iis 建网站手机访问国际新闻今日头条
  • 网站建设用户登录查询收录
  • 请人做外贸网站应注意什么小程序推广方案
  • 中国人民建设银行网站站长之家产品介绍
  • 南宁网络推广建站企业关键词优化最新报价
  • 是用cms还是直接用语言写网站秘密入口3秒自动进入
  • 重庆出名的网站建设公司神马seo服务
  • 陕西网站建设热线免费域名怎么注册
  • 手机购物网站模板月饼营销软文
  • 产品review网站怎么做太原seo外包平台
  • 罗湖做网站运营乐云seo泰州网站优化公司
  • 网上书店网网站建设免费网站的软件
  • 做的比较好的二手交易网站有哪些seo专员工作容易学吗