FrameWork 之 Activity

Activity 与普通类 有什么区别?

Activity生命周期本质

Activity在AMS中的处理逻辑(Activity Manager Service)

ActivityThread是什么?
ActivityThread 是运行在 Activity主线程中的一个普通的java类.本身不是一个线程
在主线程方法中运行—->调用ActivityThread main()方法
(消息队列准备, 启动)
ActivityThread 源码分析

##main()

Looper.prepareMainLooper();//准备消息队列

public static void prepareMainLooper(){
  prepare(false);
  :
  :
  :
  .......
}

private static void prepare(boolean quitAllowed){
  if(sThreadLocal.get()!=null){
    throw new RuntimeException("Only one Looper may be created per Thread");
    sThreadLocal.set(new Looper(quitAllowed);//创建一个消息队列
  }
}
//可以看出这一步主要是创建一个消息队列

###Looper.loop()
开始循环处理消息
###Thread.attach
主要处理和AMS的交互,通信
```java
private void attach(boolean system){
  //ActivityManagerNative是AMS的远程代理对象,因为AMS在一个单独的线程当中    代理模式?
  final IActivityManger mgr= ActivityManagerNative.getDefault();  

  try{
      mgr.attachApplication(mAppThread);//ApplictionThread类  调用远程binder文件 传输数据
  }catch(){}
}





<div class="se-preview-section-delimiter"></div>

###ApplicationThread




<div class="se-preview-section-delimiter"></div>

```java
private class ApplicationThread extends ApplicationThreadNative{
//往下看下继承的类
}
 public  abstract class ApplicationThreadNative extends Binder implements IApplication
//和AMS 通信的一个 Binder的具体实现类
处理具体的逻辑,在ActivityThread中初始化

ActivityClientRecord

定义Activity的描述的记录,配置信息,Window等等等等..

Context是什么 –环境 相关资源

本身是一个接口.

Paste_Image.png

Activity extends ContextThemeWrapper //Activity是Context的一个实现类
public abstract class Context{
    //定义了一些 Acitity所需资源/方法
}

ContextWrapper  extends Context{  //具体实现
Context mBase;
public ContextWrapper(Context base){//传进来mbase
   mbase = base;
}
    //for example
  @override
   public Resources getResources(){
      return mBase.getResources();
  }
}

//mbase 是Context的具体实现类
class ContextImp extends Context{

}

Activity生命周期具体回调

Instrumentation

本质:负责打开Activity的生命周期方法/创建Application对象 /启动Activity
for example:
startActivity();
startActivityForResult();最终都是调用此类
本质:辅助AMS管理Activity生命周期

ActivityManagerNative

本质:辅助AMS与客户端跨线程交互(结合前文理解)

H类 H extends Handler

本质:处理AMS发送过来的具体消息 (看图片)

框架层学习笔记,仅供参考,代码为手打,错误之处烦请指正,欢迎交流 qq:11417998

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值