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

来源:互联网 发布:mysql variables 修改 编辑:程序博客网 时间:2024/06/15 18:15

开始我们先来回顾一下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就先写到这里了,欢迎大家一起交流学习。
1 0
原创粉丝点击