于Activity 相关的几个对象简单分析

于Activity相关的对象

目录:

 ActivityThread,

ApplicationThread,

ActivityClientRecord,

Context,

Instrumentation,。

ActivityThread:  我们都知道程序运行的时候有创建一条主线程(ui线程)来进行程序的一些初始化操作。其中ActivityThread中做了大多的工作。:首先ActivityThread只是一个普通的class类文件不是线程类,没有集成Thread不要被Thrad迷惑。他的主要作用有:

(1):通过Looper.PrepareMainlooper()来创建一个轮询器,并且启动轮询器。

     

final H mH = new H();

private class H extends Handler {
    public static final int LAUNCH_ACTIVITY = 100;
    // .......
    public void handleMessage(Message msg) {
        switch(msg.what) {
            case LAUNCH_ACTIVITY: {
                // 获取AMS远程传递过来的Activity描述对象
                final ActivityClientRecord r = (ActivityClientRecord)msg.obj;
                r.packageInfo = getPackageInfoNoCheck(r.activityInfo.application, r.compatInfo);
                // 这个是真正启动Activity的方法
                handleLaunchActivity(r, null);
            } break;
        }
    }
}

(2):new ActivityThread()创建一个ActivityThread对象。

(3):在attach方法中创始化ApplitionThread,用于快进程间通信Ams(ActivityManagerService,管理Activity)。

ApplicationThread:是通信接口binder的实现类,接受Ams的指令。用于进程间通信,其中上面创建的轮询器H就是接受事件,比如启动打开一个Activity。

ActivityClientRecord:Activity信息的描述类,每一个Activity创建的时候都会有一个ActivityClientRecord,

    static final class ActivityClientRecord {  
        IBinder token;  
        int ident;  
        Intent intent;  
        Bundle state;  
        Activity activity;  
        Window window;  
        Activity parent;  
        String embeddedID;  
        Activity.NonConfigurationInstances lastNonConfigurationInstances;  
        boolean paused;  
        boolean stopped;  
     
        ...  
    }  

Context:


翻译就是环境的意思。是个抽象类,常用获取资源文件,和一些方法比如startActivity,Context 有两个实现类。ContextImp,ContextWrapper.其中CotextWrapper里有三个主要的子类。ContextThemeWrapper,Application,Service.其中ContextThemtWrapper的子类是Activity。Activity因为需要界面ui所以继承ContextThemtWrapper。而Application,和service不需要所以没有继承。


Instrumentation:这个类很重要,Activity的生命周期方法都是有这个类进行操作的。

通过Instrumentation的callActivityOnCreate方法来回调Activity的onCreate()方法。其他的onResuse,onstart都类似。

 

Acitivity,Application的创建都是通过反射创建。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值