从系统层面分析,Activity创建过程
Activity Dialog Toast PopWindow 菜单等 视图都依赖于 Window 通过 PolicyManager 调用 makeNewWindow方法创建,最终依赖于 PhoneWindow
1、ActivityThread 调用performLaunchActivity,通过类加载器创建 Activity实例对象
2、attach中关联上下文,创建所属的window对象,设置回调接口 callback( 对应 onAttachToWindow onDetachedFromWindow dispatchTouchEvent ) 方法
3、oncreate方法中进行 setContentview,触发
phoneWindow创建 DecorView顶级容器
通过layoutInflater 将布局xml文件转化为view
并将view添加到 DecorView容器中
4、通过ActivityThread触发handleResumeActivity调用Activity的onresume方法
进而调用makeVisible方法,最终将DecorView添加到 ViewManager中,进而建立view和WindowManager的关系 (WindowManager 继承 ViewManager)
Service启动过程
1、类加载器创建 Service实例
2、创建Application对象,并调用onCreate方法
3、创建ContextImpl环境上下文,并在Service的attach方法中建立与 ContextImpl的关系
4、最后调用oncreate方法,将Service存储到 ActivityThread中的列表中,ArrayMap