activity生命周期

Activity 其实就是一个面板或容器,承载其他组件;类似于Java里的Panel和Frame,J2ME里的MIDlet。


Activity的生命周期:



在 android 中,Activity 拥有四种基本状态:
1.Active/Runing一个新 Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。
2.Paused 当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互。
3.Stoped 当 Activity 被另外一个 Activity 覆盖、失去焦点并不可见时处于 Stoped状态。
4.Killed Activity 被系统杀死回收或者没有被启动时处于 Killed状态。

当一个 Activity 实例被创建、销毁或者启动另外一个 Activity 时,它在这四种状态之间进行转换,这种转换的发生依赖于用户程序的动作。


在 android.app.Activity类中,Android 定义了一系列与生命周期相关的方法,在我们自己的 Activity 中,只是根据需要复写需要的方法,Java 的多态性会保证我们自己的方法被虚拟机调用,这一点与 J2ME 中的 MIDlet 类似。




[java] view plaincopy
01.public class OurActivity extends Activity {  
02.   protected void onCreate(Bundle savedInstanceState);  
03.   protected void onStart();  
04.   protected void onResume();  
05.   protected void onPause();  
06.   protected void onStop();  
07.   protected void onDestroy();  
08.}  

protected void onCreate(Bundle savedInstanceState)一个 Activity 的实例被启动时调用的第一个方法。一般情况下,我们都覆盖该方法作为应用程序的一个入口点,在这里做一些初始化数据、设置用户界面等工作。大多数情况下,我们都要在这里从 xml 中加载设计好的用户界面。






[java] view plaincopy
01.setContentView(R.layout.main);  

当然,也可从 savedInstanceState中读我们保存到存储设备中的数据,但是需要判断 savedInstanceState是否为 null,因为 Activity 第一次启动时并没有数据被存贮在设备中:






[java] view plaincopy
01.if(savedInstanceState!=null){  
02. savedInstanceState.get("Key");  
03. }  

i.protected void onStart()  该方法在 onCreate() 方法之后被调用,或者在 Activity 从 Stop 状态转换为 Active 状态时被调用。
ii.protected void onResume()  在Activity 从 Pause 状态转换到 Active 状态时被调用。
iii.protected void onResume()  在Activity 从 Active 状态转换到 Pause 状态时被调用。
iv.protected void onStop()  在Activity 从 Active 状态转换到 Stop 状态时被调用。一般我们在这里保存 Activity 的状态信息。
v.protected void onDestroy()  在 Active 被结束时调用,它是被结束时调用的最后一个方法,在这里一般做些释放资源,清理内存等工作。


创建一个 Activity

在 android 中创建一个 Activity 是很简单的事情,编写一个继承自 android.app.Activity的 Java 类并在 AndroidManifest.xml声明即可。






启动另外一个 Activity

Activity.startActivity()方法可以根据传入的参数启动另外一个 Activity:




[java] view plaincopy
01.Intent intent =new Intent(CurrentActivity.this,OtherActivity.class);  
02. startActivity(intent);  






转载地址 http://www.ibm.com/developerworks/cn/opensource/os-cn-android-actvt/

你可能感兴趣的:(android,Activity)