Activity详解Activity的使用步骤、生命周期及其启动模式、启动方法

开始我们先来回顾一下Activity的基础知识:
Activity是应用程序的表现层,应用程序中可以包含多个Activity,它们之间可以相互跳转,来达到手机屏幕的切换。Activity通过View来实现应用程序的图形用户界面GUI,手机用户直接通过GUI和应用程序进行交互,应用程序通过GUI向用户显示信息,用户通过GUI向应用程序发出指令和响应。

Activity的使用步骤:

 1.创建Activity,创建类继承Activity或其子类
 2.配置Activity:必须显式在Manifest配置文件<application>中为其添加<activity>,为<activity>配android:name属性,值为.className  
如一个Android工程中名MainActivity的Activity配置为:
    ```
    <activity
                android:name=".MainActivity"
                android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />

                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
    </activity>
    ```
其中<intent-filter>标签为标记当前Activity为入口Activity。

Activity栈

Android中所有的Activity都被保存在Activity栈中,当启动一个新的Activity时,这个Activity就被压入栈的顶部,如果用 户通过“返回”键返回上一个Activity的界面,那么栈顶的Activity就会被弹出,之前位于栈顶的第二个Activity就会变成
       为新的栈顶Activity,系统总是会显示栈顶的Activity给用户

Activity生命周期

--Activity的生命周期是指一个Activity从创建到销毁的过程,期间会经过多个状态的变化,每次状态的变化都会触发相应的回调方法
--根据Activity不同的状态,将Activity生命周期分为四个阶段:
    1.运行状态:可见,并可操作
             onCreate-onStart-onResume 
             onRestart-onStart-onResume
    2.暂停状态:可见,但不可操作
             onPause
    3.停止状态:不可见,不可操作
             onStop
    4.销毁状态
             onDestory

--关于各个回调方法被调用的时机:
onCreate():Activity在实例化过程被调用,进而创建工作。只会调用一次,一般创建界面没做一些数据的初始化工作
onStart()  :Activity启动过程的回调函数
onResume():恢复Activity时被回调,onStart()方法后一定会回调该方法
onPause():暂停Activity时被回调(Activity失去操作焦点,但可见),应在这里保存一些数据
onStop():停止Activity时被回调(Activity失去操作焦点,不可见)
onDestory():销毁Activity时被回调,该方法只会被调用一次(回收资源)这是被kill前最后一个被调用的方法
onRestart():活动由停止状态变为运行状态之前调用,也就是活动被重新启动

-- Activity生命周期的三种状态:
  1.Activity完整的生命周期:指从调用onCreate()创建Activity到最终调用onDestroy()销毁Activity的过程
        onCreate()-->onStart()--->onResume()-->onPause()-->onStop()-->onDestory()
  2.可见Activity的生命周期:指从调用onStart()/onRestart()开始到调用onStop()结束的过程
            onStart()/onRestart()-->onResume()-->onPause-->onStop()
  3.活跃Activity的生命周期:指从调用onResume()到调用onPause()暂停的过程
            onResume()-->onPause()

--下面详细讲解几个过程:
  1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态
  2.当前Activity被其他Activity覆盖其上或被锁屏,系统会调用onPause方法,暂停当前Activity的执行
  3.当前Activity由覆盖状态回到前台或解锁屏,系统会调用onResume方法,再次进入运行状态
  4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停止状态
  5.用户后退回到此Activity,系统会先调用onRestart方法,然后调用onStart方法,最后onResume方法重新进入运行状态
  6.当前Activity处于覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回到当前Activity,再次调用第1步方法
  7.用户退出当前Activity,系统会先调用onPause方法,然后调用onStop方法,最后调用onDestory方法结束当前Activity

Activity的启动模式:

Activity启动方式有四种,分别是:
standard        默认模式       可有多个实例,允许多个相同的Activity叠加 
singleTop       栈顶单例       可有多个实例,不允许多个相同的Activity叠加,相同时调用onNewIntent方法
singleTask      栈内单例       只有一个实例,重复启动时会把task中在其之上的其它Activity destory掉并调用onNewIntent方法
singleInstance  全局单例       只有一个实例,并且这个实例独立运行在一个task中,这个task中只有这个实例,不允许有别的Activity存在

Activity启动Activity的两种方法:

 1.通过startActivity(Intent inrent)启动Activity
           传递参数的方式:putExtra("key",values);
                         或者:putExtra(Bundle);
           获取参数的方式:putXxxExtra(key) 或者 getExtras().getXxx()     Xxx为数据类型
 2.通过startActivityForResult(Intent intent,int requestCode):以指定的请求码启动Activity,而且程序将会等待新启动Activity的结果
 一般情况下,我们只需要保证requestCode>-1即可,这样它都能收到result.但是如果在Activity中,能够跳转到多个Activity,并且要接受到多个activity中的信息的时候,我们就要注意当使用startActivityForResult()的时候,给每一个不同的Activity一个独立的requestCode,那么在你接收到result的时候就可以根据这个参数来判断结果是个Activity返回来的了
 启动的Activity重写onActivityResult()
 被启动的Activity返回数据:setResult(int,Intent) 

onSaveInstanceState和onRestoreInstanceState触发的时机:

当某个activity变得“容易"被系统销毁时,该Activity的onSaveInstanceState就会被执行,除非该Activity是被用户主动销毁的,例如用户按Back键时
   何为“容易”?意思就是该Activity还没有被销毁,仅仅可能被销毁,有这么几种情况:
   1.当用户按下HOME键时:系统不知道你按下HOME键后要运行多少其他的程序,也不知道activity是否会被销毁,所以这时系统会调用onSaveInstanceState方法
      让用户有机会保存某些非永久性的数据,以下几种情况的分析都遵循该原则
   2.长按HOME键,选择运行其他的程序时
   3.按下电源按键(关闭屏幕显示)时
   4.从Activity中启动一个新的Activity时
   5.屏幕方向切换时,例如从竖屏切换到横屏:在屏幕切换之前,系统会销毁该activity,在屏幕切换之后,系统会自动地创建activity,所以会执行onSaveInstanceState方法
 onSaveInstanceState的调用遵循一个重要原则,即当系统“未经你许可”时销毁了你的activity,则onSaveInstanceState会被系统调用。
 onRestoreInstanceState方法需要注意的是,它和onSaveInstanceState方法不一定是成对被调用的,onRestoreInstanceState被调用的前提是,Actvity确实被系统销毁了,如果仅仅是停留在刘可能被销毁的情况下,该方法不会被调用。

好了,今天Android四大组件之一的Activity就先写到这里了,欢迎大家一起交流学习。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值