操作系统角度详解Activity(一)
来源:互联网 发布:软件服务行业账务处理 编辑:程序博客网 时间:2024/06/16 12:13
操作系统中,建立了进程的五种状态模型,即 静止就绪、活动就绪、静止阻塞、活动阻塞、运行五种状态,同样熟悉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;
}
是不是很相似,对的,很相似。这里我们将用户操作视为一次调度
- 操作系统角度详解Activity(一)
- 从源码角度看Activity知识点(一)
- Activity 详解(一)
- activity详解(一)
- activity详解一
- 一 activity 面试详解
- Android activity 详解一:activity的生命周期
- Activity生命周期详解(一)单个activity
- android activity详解一:概述
- android activity详解一:概述
- android activity详解一:概述
- Android开发之Activity详解一
- Android 四大组件详解(一) Activity
- Android Activity类详解(一)
- Activity的生命周期详解(一)
- Android四大组件--Activity详解(一)
- Activity详解 (一) : Activity的创建与启动
- Activity详解一 配置、启动和关闭activity
- Android 基础 View
- ubuntu 磁盘挂载问题
- java通过经纬度计算两个点的之间的距离的算法
- ZendFramework2学习笔记 静态配置layout模板和动态设置layout模板
- PHP运行模式(cgi,fast-cgi,cli,web模块模式)
- 操作系统角度详解Activity(一)
- Redis安装笔记
- DSP学习总结——事件管理模块
- PHP运行模式(cgi,fast-cgi,cli,web模块模式)
- From VS to Emacs
- 《数据结构》第三章 栈和队列 实验
- hdu 5044 Tree (树链剖分+打标记)
- Fragments (Android官方文档中文版)
- OpenCV优化:图像的遍历4种方式