当前位置:操作系统 > 安卓/Android >>

Android笔记 八 详解android中activity的完整生命周期

 

android中 activity有自己的生命周期,对这些知识的学习可以帮助我们在今后写程序的时候,更好的理解其中遇到的一些错误。这篇文章很长,希望不要耽误大家的时间~

  今天不会涉及太多关于activity栈的东西,主要说activity自身的生命周期

 区分几个概念 

1 Activity 官方解释为 “An Activity is an application component that provides a screen with which users can interact in order to do something, such as dial the  phone, take a photo, send an email, or view a map. Each activity is given a window in which to draw its user inte易做图ce. ”也就是用户用来交互的每一个窗口,用户当前正在进行的一个操作。

2 back-stack  用户通过触摸程序会通过application launcher来启动一个activity A,启动的activity A会被压入栈顶,如果当前的activity A再启动一个新的activity B,那么此时A调用onStop函数,系统会维护这个activity信息.当用户按下back键的时候,back stack会进行一个pop的操作,并且调用A的onResume()  具体的进出栈细节,以后会详细介绍。


3 Tasks  当用户处于某个activi提: Activity A在名称为"TaskOne应用ty的时候,按下HOME键用户返回到launcher,此时,如果用户再触摸新的应用,则新建一个Task,一个back stack就代表一个task.不同程序的activity可以压入同一个栈中,也就是说可以组成一个task,比如你的程序启动了一个系统自带的发短信的activity,给用户的感觉就是发短信好像是你的程序中的一个功能一样。


注释:以上的行为均为系统的默认设置,有两种方式可以改变activity的行为,加入A启动B,一是在B的manifest设置中,改变行为,另一种是在Activity发起的intent中指定要启动的activity设置,其中Intent的优先级要高于manifest.xml文件,并且有些mode在并不是同时都存在于两种方式中。


android的生命周期包括  onCreate onStart onRestart onResume onPause onStop onDestroy ,activity在声明周期中会调用以上方法来执行不同状态对应的操作,下面介绍各个方法的调用时间

------------------------------------------------------------------------------------------------------------------------------------------------------------
onCreate()     次状态下activity不可被终结 

Called when the activity is first created. This is where you should do all of your normal static set up: create views, bind data to lists, etc. This method also provides you with a Bundle containing the activity's previously frozen state, if there was one.
Always followed by onStart().
//当activity第一次被创建的时候调用。你应该在这个方法里进行所有的静态创建,创建views,(通过setContnetView方法)向lists绑定数据等等。如果存在保存的状态的话,该方法也提供给你一个包含activity最近状态的一个bundle。onStart方法总是在此方法之后调用


onRestart()    次状态下activity不可被终结 

Called after your activity has been stopped, prior to it being started again.
Always followed by onStart()
//在你的activity停止后被调用,在重新开始之前调用


CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,