android-生命周期介绍

打开应用:onCreate()->onStart()->onResume

BACK键:onPause()->onStop()->onDestory()

HOME键:onPause()->onStop()

再次启动:onRestart()->onStart()->onResume()

三个嵌套循环

1.整体生命周期:onCreate
-> ... ... -> onDestroy。

2.可视生命周期:onStop
-> ... ... -> onPause。

3.焦点生命周期:onPause
-> onResume。

四个阶段

1.开始Activity:在这个阶段依次执行3个生命周期方法:onCreate、onStart和onResume。

2.Activity失去焦点:如果在Activity获得焦点的情况下进入其他的Activity或应用程序,这时当前的Activity会失去焦点。在这一阶段,会依次执行onPause和onStop方法。

3.Activity重新获得焦点:如果Activity重新获得焦点,会依次执行3个生命周期方法:onRestart、onStart和onResume。

4.关闭Activity:当Activity被关闭时系统会依次执行3个生命周期方法:onPause、onStop和onDestroy。

七个方法

1.
void onCreate(Bundle savedInstanceState)

当Activity被第首次加载时执行。我们新启动一个程序的时候其主窗体的onCreate事件就会被执行。如果Activity被销毁后(onDestroy后),再重新加载进Task时,其onCreate事件也会被重新执行。注意这里的参数
savedInstanceState(Bundle类型是一个键值对集合,大家可以看成是.Net中的Dictionary)是一个很有用的设计,由于前面已经说到的手机应用的特殊性,一个Activity很可能被强制交换到后台(交换到后台就是指该窗体不再对用户可见,但实际上又还是存在于某个Task中的,比如一个新的Activity压入了当前的Task从而“遮盖”住了当前的
Activity,或者用户按了Home键回到桌面,又或者其他重要事件发生导致新的Activity出现在当前Activity之上,比如来电界面),而如果此后用户在一段时间内没有重新查看该窗体(Android通过长按Home键可以选择最近运行的6个程序,或者用户直接再次点击程序的运行图标,如果窗体所在的Task和进程没有被系统销毁,则不用重新加载,直接重新显示Task顶部的Activity,这就称之为重新查看某个程序的窗体),该窗体连同其所在的
Task和Process则可能已经被系统自动销毁了,此时如果再次查看该窗体,则要重新执行
onCreate事件初始化窗体。而这个时候我们可能希望用户继续上次打开该窗体时的操作状态进行操作,而不是一切从头开始。例如用户在编辑短信时突然来电,接完电话后用户又去做了一些其他的事情,比如保存来电号码到联系人,而没有立即回到短信编辑界面,导致了短信编辑界面被销毁,当用户重新进入短信程序时他可能希望继续上次的编辑。这种情况我们就可以覆写Activity的void
onSaveInstanceState(Bundle
outState)事件,通过向outState中写入一些我们需要在窗体销毁前保存的状态或信息,这样在窗体重新执行onCreate的时候,则会通过
savedInstanceState将之前保存的信息传递进来,此时我们就可以有选择的利用这些信息来初始化窗体,而不是一切从头开始。

2.
void onStart() activity变为在屏幕上对用户可见时调用。

onCreate事件之后执行。或者当前窗体被交换到后台后,在用户重新查看窗体前已经过去了一段时间,窗体已经执行了onStop事件,但是窗体和其所在进程并没有被销毁,用户再次重新查看窗体时会执行onRestart事件,之后会跳过onCreate事件,直接执行窗体的onStart事件。

3.
void onResume() activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用的)。

onStart事件之后执行。或者当前窗体被交换到后台后,在用户重新查看窗体时,窗体还没有被销毁,也没有执行过onStop事件(窗体还继续存在于Task中),则会跳过窗体的onCreate和onStart事件,直接执行onResume事件。

4.
void onPause() activity被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的,也是保护现场,压栈吧!

窗体被交换到后台时执行。

5.
void onStop() activity被停止并转为不可见阶段及后续的生命周期事件时调用。

onPause事件之后执行。如果一段时间内用户还没有重新查看该窗体,则该窗体的onStop事件将会被执行;或者用户直接按了Back键,将该窗体从当前Task中移除,也会执行该窗体的onStop事件。

6.
void onRestart() 重新启动activity时调用。该活动仍在栈中,而不是启动新的活动。

onStop事件执行后,如果窗体和其所在的进程没有被系统销毁,此时用户又重新查看该窗体,则会执行窗体的onRestart事件,onRestart事件后会跳过窗体的onCreate事件直接执行onStart事件。

7.
void onDestroy()
activity被完全从系统内存中移除时调用,该方法被调用可能是因为有人直接调用onFinish()方法或者系统决定停止该活动以释放资源!

Activity被销毁的时候执行。在窗体的onStop事件之后,如果没有再次查看该窗体,Activity则会被销毁。

1.onCreate
:当活动第一次启动的时候,触发该方法,可以在此时完成活动的初始化工作。

onCreate
方法有一个参数,该参数可以为空( null
),也可以是之前调用 onSaveInstanceState
()方法保存的状态信息。

2.onStart
:该方法的触发表示所属活动将被展现给用户。

3.onResume
:当一个活动和用户发生交互的时候,触发该方法。

4.onPause
:当一个正在前台运行的活动因为其他的活动需要前台运行而转入后台运行的时候,触发该方法。这时候需要将活动的状态持久化,比如正在编辑的数据库记录等。

5.onStop
:当一个活动不再需要展示给用户的时候,触发该方法。如果内存紧张,系统会直接结束这个活动,而不会触发
onStop 方法。
所以保存状态信息是应该在onPause时做,而不是onStop时做。活动如果没有在前台运行,都将被停止或者Linux管理进程为了给新的活动预留足够的存储空间而随时结束这些活动。因此对于开发者来说,在设计应用程序的时候,必须时刻牢记这一原则。在一些情况下,onPause方法或许是活动触发的最后的方法,因此开发者需要在这个时候保存需要保存的信息。

6.onRestart
:当处于停止状态的活动需要再次展现给用户的时候,触发该方法。

7.onDestroy
:当活动销毁的时候,触发该方法。和 onStop
方法一样,如果内存紧张,系统会直接结束这个活动而不会触发该方法。

8.onSaveInstanceState
:系统调用该方法,允许活动保存之前的状态,比如说在一串字符串中的光标所处的位置等。

通常情况下,开发者不需要重写覆盖该方法,在默认的实现中,已经提供了自动保存活动所涉及到的用户界面组件的所有状态信息。

android监听事件添加动作的三种方式

第一种也是最开始就接触的方式,通常在activity组件的oncreate事件中直接定义,直接动作。这种方式每个控件都定义一次,通常不方便。

Button
btn = (Button) findViewById(R.id.myButton);

btn.setOnClickListener(new
View.OnClickListener(){

public
void onClick(View v){

//do
something

}

});

第二种通常是在activity组件实现其接口,这样可以多外控件共享一个接口,这样相对方便。

public
class My Activity extends Activity implements View.OnClickListener{

@Override

public
void onClick(View v){

switch
(v.getId()){

}

}

}

第三种类似第二种,定义一个具体的实例,这样的好处在于如果需要实现多个监听接口,这样更清晰

class
MyClickListener implements View.OnClickListener

@Override

public
void onClick(View v) {

switch
(v.getId()) {

}

}

}

时间: 2024-12-20 18:49:52

android-生命周期介绍的相关文章

Android四大基本组件介绍与生命周期介绍。

Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity : 应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应. Activity之间通过Intent进行通信.在Intent 的描述结构中,有两个最重要的部分:动作和动作对应的数据. 典型的动作类型有:M AIN(activity的门户).V

Android生命周期里你或许不知道的事

Android生命周期估计连初学者都再熟悉不过的东西了,但这里我抛出几个问题,或许大家以前没有想过或者可能认识的有些错误. 一.当A启动B时,A和B生命周期方法执行的先后顺序是怎样的?当按返回键返回时,又是怎样的?(读者可以先想想,可能会跟你的答案不一致) A--->B时,打印结果如下: 按返回键B--->A,打印结果如下: 结论:先执行当前显示Activity的onPause方法,接着执行完将要显示Activity的生命周期方法,最后再执行当前显示Activity的其它生命周期方法 二.生命

hibernate--持久对象的生命周期介绍

持久化对象的状态 : 1. 瞬时对象(Transient Object):使用new操作符初始化的对象不是立刻就持久的.它们的状态是瞬时的,也就是说它们没有任何跟数据库表相关联的行为,只要应用不再引用这些对象(不再被任何其它对象所引用),它们的状态将会丢失,并由垃圾回收机制回收 2. 持久化对象(Persistent Object):持久实例是任何具有数据库标识的实例,它有持久化管理器Session统一管理,持久实例是在事务中进行操作的----它们的状态在事务结束时同数据库进行同步.当事务提交时

Android进程与生命周期介绍

Android系统会尽可能长的延续一个应用程序进程,但在内存过低的时候,仍然会不可避免需要移除旧的进程.为决定保留或移除一个进程,Android将每个进程都放入一个“重要性层次”中,依据则是它其中运行着的组件及其状态.重要性最低的进程首先被消灭,然后是较低的,依此类推.重要性共分五层,依据重要性列表如下: 1.  前台进程•是用户操作所必须的,任一时间下,仅有少数进程会处于前台,仅当内存实在无法供给它们维持同时运行时才会被杀死.一般来说,在这种情况下,设备依然处于使用虚拟内存的状态,必须要杀死一

android application生命周期介绍

看到application这个类,一直不知道这个是干什么用的,今天刚好有点时间,所以进行了详细的学习. 一.先对它的整体概念解释: 在android源码中对他的描述是; * Base class for those who need to maintain global application state. You can * provide your own implementation by specifying its name in your * AndroidManifest.xml'

android Fragment生命周期介绍

官网帮助文档链接: http://developer.android.com/guide/components/fragments.html 主要看两张图,和跑代码 一,Fragment的生命周 二,与Activity生命周期的对比 场景演示 : 切换到该Fragment 11-29 14:26:35.095: D/AppListFragment(7649): onAttach 11-29 14:26:35.095: D/AppListFragment(7649): onCreate 11-29

android学习记录 生命周期介绍和页面跳转

Activity生命周期(7个方法和3个阶段) 7个方法: Void onCreate(Bundle savedlnstanceState) Void onStart()    //开始 Void onRestart()  //重置 Void onResume()  //回复 Void onPause()   //暂停 Void onStop()    //停止 Void onDestroy()  //销毁 3个阶段: 开始Activity,在这个阶段以此执行3个生命周期,分别是onCreate

4、android生命周期的介绍

1.什么事Activity 就是布满整个窗口或者悬浮于其他窗口之上的交互界面,一个应用由多个Activity构成,都会在Mainifest.xml中指定一个主的Activity. 当程序第一次运行就会看到主activity,这个activity通过启动其他activity进行相关操作 当启动其他activity时,当前这个activity将会停止,新的activity压入栈中,同事获取用户焦点 因为栈是先进后出,用户back时,当前页面销毁,之前页面显示 2.Activity的生命周期 7个方法

android生命周期总结

管理Activity的生命周期 当用户浏览,离开和返回到你的app,Activity的实例在其生命周期的不同状态下转换.举例来说:当你的应用程序第一次启动时,它来到系统中突出的位置并且接收用户的焦点.(it comes to the foreground of the system and receives user focus.)在此过程中,当你装载用户界面和其他组件时,Android系统在你的Activity中调用了一系列的生命周期函数.如果用户做了一个动作启动了其他的activity或者切

Android 生命周期

与windows平台不同,Android应用程序不能控制自己的生命周期,应用程序组件必须监听应用程序的状态的变化并作出适当反应,特别要注意为随时被终止做好准备 默认情况下,每个Android应用程序都是通过他们自己的进程运行,每个进程都运行在独立的Dalvik实例中,每个应用程序的内存和进程管理都是由运行时进行专门处理的.通过使用android:process属性可以使同一个应用程序组件运行在不同的进程中,或者让多个应用程序共享一个进程 回收资源时,进程被终止的顺序是由它们的应用程序优先级决定的