您的位置:首页 > 移动开发 > Android开发

Activity

2014-05-06 10:10 381 查看
Activity生命周期



方法描述Killable?后一个
onCreate()
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方法总是在此方法之后调用

No
onStart()
 
onRestart()
Called after your activity has been stopped, prior to it being started again.
Always followed by 
onStart()

//在你的activity停止后被调用,在重新开始之前调用。onStart方法总是在此方法之后调用

No
onStart()
onStart()
Called when the activity is becoming visible to the user.
Followed by 
onResume()
 if the activity comes to the foreground, or 
onStop()
 if
it becomes hidden.
//在你的activity被用户看到时调用,如果activity在前台工作,一般之后执行[b]onResume,如果在后台,则调用[b]onStop[/b][/b]

No
onResume()
or 
onStop()
 
onResume()
Called when the activity will start interacting with the user. At this point your activity is at the top of the activity stack, with user input going to it.
Always followed by 
onPause()
.
//当activity将被启动与用户交互的时候被调用。此刻你的activity处于activity栈的顶端,用于用户输入,永远在onPause之后被调用

No
onPause()
onPause()
Called when the system is about to start resuming a previous activity. This is typically used to commit unsaved changes to persistent data, stop animations and other things that may be consuming CPU, etc. Implementations of this method must be very quick because
the next activity will not be resumed until this method returns.
Followed by either 
onResume()
 if the activity returns back to the front, or 
onStop()
 if
it becomes invisible to the user.
//当系统即将重新开始以前的activity的时候被调用(不懂,自己的理解是:Activity从onStart状态进入暂停状态,Activity挂起),典型的应用是用来将还未保存的数据提交到当前的数据,(意思就是保存数据更新),停止animations和其他可能耗费CPU的操作。对此方法的实现必须快速因为下个activity直到此方法返回才会被重新开始。
当activity从不可见状态转到可见状态时会在onPause方法之后被调用
当activity变为不可见的时候,onStop方法会在onPause之后被调用

Pre-
HONEYCOMB
onResume()
or
onStop()
onStop()
Called when the activity is no longer visible to the user, because another activity has been resumed and is covering this one. This may happen either because a new activity is being started, an existing one is being brought in front of this one, or this one
is being destroyed.
Followed by either 
onRestart()
 if this activity is coming back to interact
with the user, or
onDestroy()
 if this activity is going away.
//当activity对用户不再可见时被调用,因为另一个activity已经重新开始并且覆盖了当前activity(在栈中)。当有新的activity被启动,或者一个存在的activity重新回到前台状态,又或者当前的activity将被销毁。如果activity要返回前台和用户进行交互则在此方法后调用onReatart方法,如果当前activity要消亡,则onDestroy方法将在此方法后被调用

Yes
onRestart()
or
onDestroy()
onDestroy()
The final call you receive before your activity is destroyed. This can happen either because the activity is finishing (someone called 
finish()
 on
it, or because the system is temporarily destroying this instance of the activity to save space. You can distinguish between these two scenarios with the
isFinishing()
 method.
 这是当你的activity被消亡时接收到的最后一个方法。调用此方法有两种情形:一是
activity将要完成,可通过调用finish方法实现。而是系统销毁activity的实例来释放空间。可以使用isFinish方法来区别两种情形。这个方法常用在onPause方法中,来判断activity是暂停还是将终止。后面的demo将会演示这个功能。
Yesnothing
onCreate 到onDestory之间属于一个完成的周期, onStart 到onStop 之间属于可见周期,onResume~onPause 之间属于可用周期。

Activity 类间接或直接地继承了Context 、ContextWrapper、ContextThemeWrapper等基类,因此Activity
可以直接调用它们的方法。
Activity是应用程序的组件,它提供了一个屏幕,用户可与之互动,以做一些事情,如拨打电话,拍照,发送电子邮件,或查看地图。每个Activity 会提供一个窗口,在其中绘制它的用户界面。通常窗口会填满整个屏幕,但也有可能比屏幕小并且浮动在其他窗口之上。
应用程序通常是多个松散并相互绑定的Activity组成。一般,用户首次启动应用时,将启动一个被指定为“main”的Activity。每个Activity都可以启动另一个Activity,以执行不同的动作。每次启动一个新的Activity,以前的Activity停止,但在系统堆栈保留Activity(“回栈”)。一个新的Activity启动时,它将Activity压到栈里面并取得用户的焦点。回堆栈遵守基本的“后进先出”的堆栈机制,这样,当用户在前Activity,按下返回按钮,则弹出堆栈(并销毁)和恢复以前的Activity。

Activity停止是因为一个新的Activity开始,通过活动的生命周期回调方法,通知这种状态发送变化。一个Activity可能会收到多个回调方法,当状态发生变化时.产生,停止,恢复,销毁,这些回调在适当的时机提供给您做相应工作的机会。例如,停止时,你的Activity应该释放大型对象,如网络或数据库连接。恢复Activity时,你可以重新获得必要的资源和恢复被中断的Activity。这些状态转换是所有的Activity程序周期的一部分。

本文件的其余部分将讨论如何建立和使用Activity,包括讨论一个完整的Activity程序周期是如何工作,你能正确的管理各种Activity状态之间的转换。


生成Activity-Creating an Activity

要生成一个Activity,你必须生成一个Activity 子类Activity (或已有的子类)。在你的子类中,创建,停止,恢复或销毁Acitivty时,你需要实现回调方法,系统调用时,用这些方法表示在Activity生命周期的各种状态之间的转换。两个最重要的回调方法是:

onCreate()
必须实现这个方法。生成Activity时系统调用。在你实现中,你应该初始化您的Activity中的组件。最重要的是,这是你必须调用 setContentView() 定义Activity的用户界面的布局。

onPause()
当用户离开你的Activity时候(尽管它并不总是意味着被销毁Activity),系统调用此方法。通常如果你需要保持当前会话的话,你所有的改动都应在这提交(因为用户可能不返回)。
还有其他几个生命周期回调方法,你应该使用这些方法处理Activity与导致使Activity必须停止,甚至销毁的突发中断之间的事情,来提供流畅的用户体验。所有的生命周期回调方法将在稍后讨论,在有关 管理Activity生命周期部分。


实现用户界面-Implementing a user interface

一个Activity的用户界面是由一组按层派生 视图类 - View 的视图对象组成。每个视图控制Activity窗口的特定矩形空间,以响应用户交互。例如,一个视图可能是一个按钮,当用户触摸它启动一个操作。

Android提供了一些现成的视图,你可以用它来​​设计和组织布局。“Widgets”就是视图,他提供一个可视的可交互的屏幕元素,如按钮,文本字段,复选框,或只是一个图象。“布局”是从 视图组 - ViewGroup 派生的,提供了对子视图特殊的布局模式,如线性布局,网格布局,或相对布局的视图组。还可以继承 视图类
- View 和 视图组 - ViewGroup(或现有的子类)来创建自己的Widgets和布局,并将其应用到您的Activity布局中。

最常见的方式来定义一个布局的意见,是一个XML布局文件保存您的应用程序资源。这种方式,你可以单独从源代码中维护你的用户界面设计以及定义Activity的行为。你可以通过setContentView()设置您的Activity的UI布局 ,传入布局的资源ID。或者,你也可以在Activity代码中生成新的 视图
- View,新建立一个 视图 - View 层次结构插入到视图组
- ViewGroup ,然后传入根 视图组 - ViewGroup 给 setContentView() 进行布局
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息