操作系统角度详解Activity(一)

     操作系统中,建立了进程的五种状态模型,即 静止就绪、活动就绪、静止阻塞、活动阻塞、运行五种状态,同样熟悉Android的人也知道Activity生命周期,那么,我们就从操作系统角度解析Activity。

      1、定义角度:

            进程:是一次程序的执行;是一个程序及其数据在处理机上顺序执行时所发生的活动。进程还是资源拥有者。

            Android:Activity中所有操作都与用户密切相关,是一个负责与用户交互的组件。

             乍看之下,两者确实没有什么相似的地方,但是,Activity作为与用户交互的组件,其核心就是资源的拥有者,想一想contentResolver是如何调用的,没错,this.getContentResolver();为什么可以这样调用,其实,就是将Activity作为系统中资源的拥有者实现的。

     2.状态角度:




上面两幅图看到过没有??如果没有看到过,可以回去看看操作系统前50页和Android基础书籍前30页。

好的,让我们来详解一下,自行脑补进程创建与退出。

进程创建与Oncreate():进程创建时

(1)申请空白PCB;
(2)为新进程分配资源,为新进程的程序和数据以及用户栈分配必要的内存空间。
(3)初始化进程控制块
(4)将新进程插入就绪队列
Android onCreate()
protected void onCreate(Bundle savedInstanceState) {
        if (DEBUG_LIFECYCLE) Slog.v(TAG, "onCreate " + this + ": " + savedInstanceState);
        if (mLastNonConfigurationInstances != null) {
            mAllLoaderManagers = mLastNonConfigurationInstances.loaders;
        }
        if (mActivityInfo.parentActivityName != null) {
            if (mActionBar == null) {
                mEnableDefaultActionBarUp = true;
            } else {
                mActionBar.setDefaultDisplayHomeAsUpEnabled(true);
            }
        }
        if (savedInstanceState != null) {
           protected void onCreate(Bundle savedInstanceState) {
        if (DEBUG_LIFECYCLE) Slog.v(TAG, "onCreate " + this + ": " + savedInstanceState);
        if (mLastNonConfigurationInstances != null) {
            mAllLoaderManagers = mLastNonConfigurationInstances.loaders;
        }
        if (mActivityInfo.parentActivityName != null) {
            if (mActionBar == null) {
                mEnableDefaultActionBarUp = true;
            } else {
                mActionBar.setDefaultDisplayHomeAsUpEnabled(true);
            }
        }
        if (savedInstanceState != null) {
            Parcelable p = savedInstanceState.getParcelable(FRAGMENTS_TAG);
            mFragments.restoreAllState(p, mLastNonConfigurationInstances != null
                    ? mLastNonConfigurationInstances.fragments : null);
        }
        mFragments.dispatchCreate();
        getApplication().dispatchActivityCreated(this, savedInstanceState);
        mCalled = true;
    }
            mFragments.restoreAllState(p, mLastNonConfigurationInstances != null
                    ? mLastNonConfigurationInstances.fragments : null);
        }
        mFragments.dispatchCreate();
        getApplication().dispatchActivityCreated(this, savedInstanceState);
        mCalled = true;
    }

这些代码什么意思,是在为Activity分配空间与资源。有没有很相似。

2、静止就绪与onStart 

静止就绪的入口有两个:(一)进程创建(二)进程等待条件发生。

onStart 会在onCreate 后执行,或者在onRestart 中回调。Android onRestart源码如下:其含义很明了,设置触发。

  protected void onRestart() {
        mCalled = true;
    }

是不是很相似,对的,很相似。这里我们将用户操作视为一次调度





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值