你的位置:首页 > 操作系统

[操作系统]四大组件之Activity详解

一、Activity的概要说明

     我看过Activity的源码,Activity类注释大概是这样解释的:几乎所有的Activity都是与用户交互用的,我想用了一个几乎的意思应该是排除一些纯展示界面吧,因此Activity类主要是创建一个窗口来展示我们所做的UI界面,我们用的时候通常是全屏来展示UI界面的,但是Activity也有一些其他的用途,比如当做一个悬浮的视窗来用(在清单文件里更改Activity的主)。

二、Activity的四种LaunchMode

     设置:<activity android:name=".MainActivity" android:launchMode="standard" />

     1、Standard:把Activity设置成Standard启动模式的意思是:比如当前显示的界面是FirstActivity,此时任务栈里就会有一个FirstActivity实例,接下来由FirstActivity跳转到FirstActivity,此时任务栈里就会生成一个新的FirstActivity实例,如果再次跳转到FirstActivity,任务栈里又会多出第二个FirstActivity实例,到现在为止任务栈里一共有三个FirstActivity实例,这时候我们连着按两次Back键,才会返回到第一个FirstActivity,如下图所示:

         

     4、singleInstance:这种启动模式的特别之处在于会启动一个新栈,一个栈存放一类(类别)的实例,就好比动物园里,好多只老虎有自己的园子,好多只猴子又有自己的园子,这里的老虎猴子就是不同的Activity,每一只老虎猴子就是个自Activity的实例。

         比如说我们当前显示的界面是FirstActivity,此时栈里就会有一个FirstActivivity实例,接下来由FirstActivity跳转到SecondActivity,这个时候就会出现一个新栈来存放SecondActivity实例的,按一下Back键又回到了第一个栈里(如下边第一个图)。假如我们从FirstActivity跳转到SecondActivity,又从SecondActivity跳转到FirstActivity,这个时候在FirstActivity所在的栈里又会创建一个新的FirstActivity实例放在栈顶,接下来我们按两次Back键,并没有退出程序,而是回到了SecondActivity(如下边第二个图)。

 

说明:
                
     3、
 
四、Activity类里容易被忽略的方法
     (一)onNewIntent(Intent intent)
         Activity的启动模式为singleTop/singleTask会执行onNewIntent方法,比如从OneActivity(SingTask模式)跳转到TwoActivity,再从TwoActivity回来,OneActivity的生命周期就会变成onNewIntent()---->onResart()------>onStart()----->onResume(),也就是说只要OneActivity在任务栈里,并且又不是第一次进入到OneActivity,就会执行onNewIntent()方法。那么
   (二)onSaveInstanceState(Bundle outState)
          在网上查过很多人资料,说这个方法只有在系统内存不够时,Activity被强制杀死的时候才会被执行,但是这种说法是错误,我试了几种情况,也会执行  
    onSaveInstanceState方法。
          1、Activity正常的跳转
        
           2、按Home键退到后台的时候
       
           3、横竖屏切换的时候,比如我们在看电影的时候,横竖屏切换的时候,必须保存切换之前看的进度。