你打开一个安卓系统

它的界面是Launcher 进程,它不断的检测用户的触摸落在哪个APP上面,如果你的触摸落在空白它不做处理,你要滑动他就给你滑动

android app 启动操作说明 android app启动过程_android

 当用户触摸这个app的时候,

android app 启动操作说明 android app启动过程_加载_02

 

 他会进行下面的流程

android app 启动操作说明 android app启动过程_android app 启动操作说明_03

 Laucher 检测用户触摸到APP以后,整个软件,整个工程最应该被加载的文件是

AndroidManifest.xml

首先他会判断你的SDK版本,你的目标机器是否能承载的了安卓APP,有的时候承载不了,安装都安装不上,有的时候能装上不能运行

android app 启动操作说明 android app启动过程_加载_04

 再来就是获取你要的权限

点击Add...

android app 启动操作说明 android app启动过程_android app 启动操作说明_05

 选择Uses Permission

 

android app 启动操作说明 android app启动过程_android_06

在这里给他加一个网络访问权限 

name 下找

 

android app 启动操作说明 android app启动过程_加载_07

 网络访问权限

 

android app 启动操作说明 android app启动过程_android_08

 然后你发现这面多了一句话

他会为你这个APP开放网络访问的端口,也就是你启动之前就帮你做好了 

android app 启动操作说明 android app启动过程_android app 启动操作说明_09

 比如一个APP有好几个界面,先启动哪个呢?大家都是activity

 这个时候有一组

 <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

这样的标签,放在这里就代表main  activity

android app 启动操作说明 android app启动过程_android app 启动操作说明_10

MainActivity 继承于 Activity(页面) 

我们自己做的类继承于MainActivity,那他还是一个页面

onCreate  代表页面被创建

android app 启动操作说明 android app启动过程_加载_11

 也就是说通过Mainfest确认

android app 启动操作说明 android app启动过程_android app 启动操作说明_12

 这个程序会被加载

android app 启动操作说明 android app启动过程_xml_13

 作为一个路口onCreate会被操作系统自动的拿来执行

也就是说,这个onCreate,有点像我们以前学的Java中的main函数

android app 启动操作说明 android app启动过程_android app 启动操作说明_14

 那么,super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

这干什么的呢?

他会调用父亲的Activity,去组建,去构建一个空白的页面出来

(没有Hello  world就是一个空白的页面)

空白的页面对用户来说就是空白,对操作系统来说,他却要做很多很多的初始化

android app 启动操作说明 android app启动过程_加载_15

 setContentView就是把R.layout.activity_main 和布局文件关联起来 

这下面存放了,页面,控件,按钮,比如文本框都在这面创建一个id 

android app 启动操作说明 android app启动过程_加载_16

 那么如何让这个.java

android app 启动操作说明 android app启动过程_加载_17

跟这个.xml关联起来?

android app 启动操作说明 android app启动过程_android_18

 

 那肯定需要这个id啦

R.java里面肯定是有一个Layout,0x7f030000

通过id 的方式让.java文件和.xml文件产生一个关联

android app 启动操作说明 android app启动过程_android app 启动操作说明_19

 比如我们现在要做一个代码的修改

第15行的hello  world 改成“冰糖李子”

android app 启动操作说明 android app启动过程_android app 启动操作说明_20

 

给他改进去 

你改进去以后,他是一个单独的布局

android app 启动操作说明 android app启动过程_android app 启动操作说明_21

 那为什么我们操作系统APP运行起来能看到这句话呢?

那是因为我的.java代码会调用setContentView,把你做的独立的布局跟空白的页面关联,

android app 启动操作说明 android app启动过程_android app 启动操作说明_22

运行一下

 

android app 启动操作说明 android app启动过程_加载_23

 于是,我们就在程序运行的时候看到了“冰糖李子” 

android app 启动操作说明 android app启动过程_加载_24

 当我触摸的时候,运行Launcher

android app 启动操作说明 android app启动过程_xml_25

 点击APP的时候,第一个被加载的是Mainfest

他看到

<intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

android app 启动操作说明 android app启动过程_xml_26

 于是它的onCreate 会被调用

android app 启动操作说明 android app启动过程_加载_27

 然后会去做一些控件.xml

以及跟这个页面的绑定作用

android app 启动操作说明 android app启动过程_xml_28

如果我现在创建另外一个页面

android app 启动操作说明 android app启动过程_xml_29

 我创建一个Andriod  Activity

android app 启动操作说明 android app启动过程_xml_30

 创建一个Blank  Activity

android app 启动操作说明 android app启动过程_android_31

 命名Other Activity 

android app 启动操作说明 android app启动过程_加载_32

 你会看见多出一个java

android app 启动操作说明 android app启动过程_android app 启动操作说明_33

 包括res   的     layout   多了一个activity_other.xml

                

android app 启动操作说明 android app启动过程_加载_34

包括在这面多了一个other  

android app 启动操作说明 android app启动过程_android_35

 如果我把

 <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

删除掉放在下面other 这面

你会看到等会先启动的other 这个页面

android app 启动操作说明 android app启动过程_android_36

 

那么other 这面有什么东西呢?

android app 启动操作说明 android app启动过程_android_37

 我们 把hello world 改成"其他页面"

android app 启动操作说明 android app启动过程_加载_38

 运行一下

android app 启动操作说明 android app启动过程_android_39

    总结:你按下安卓APP的时候,

它第一个运行的是    AndroidManifest.xml,他会给你分配权限,同时看一下这些页面哪一个作为手动启动的页面,

当你手动启动页面被加载以后,他会找到 onCreate这个路口,然后他会关联空白页面跟哪个布局页面进行关联,        

super.onCreate(savedInstanceState);
                                 setContentView(R.layout.activity_other);

会去显示你布局页面关联里面的一些数据