Activity组件

来源:互联网 发布:公司活动软文 知乎 编辑:程序博客网 时间:2024/05/01 23:39

创建Activity

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

AndroidManifest.xml中通过<activity> 节点说明 Activity,将 apk 文件安装后,系统根据这里的说明来查找读取Activity。

 <activityandroid:name=".Example"android:label="@string/app_name">

                <intent-filter>

                                <actionandroid:name="android.intent.action.MAIN" />

                                <categoryandroid:name="android.intent.category.LAUNCHER" />

                </intent-filter>

 </activity> 

 

Activity状态

Active/Runing一个新Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。

Paused 当Activity 被另一个透明或者 Dialog 样式的Activity 覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互。

Stopped 当Activity 被另外一个 Activity 覆盖、失去焦点并不可见时处于 Stopped状态。

Killed Activity被系统杀死回收或者没有被启动时处于 Killed状态。

Activity

Android是通过一种Activity 栈的方式来管理 Activity 的,一个 Activity 实例的状态决定它在栈中的位置。处于前台的Activity 总是在栈的顶端,当前台的 Activity 因为异常或其它原因被销毁时,处于栈第二层的Activity 将被激活,上浮到栈顶。当新的 Activity 启动入栈时,原 Activity 会被压入到栈的第二层。一个Activity 在栈中的位置变化反映了它在不同状态间的转换。

备注:除了最顶层即处在Active 状态的Activity 外,其它的 Activity 都有可能在系统内存不足时被回收,一个Activity 的实例越是处在栈的底层,它被系统回收的可能性越大。系统负责管理栈中 Activity 的实例,它根据Activity 所处的状态来改变其在栈中的位置。

 

Activity 生命周期

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

 public class OurActivity extends Activity {

    protected void onCreate(Bundle savedInstanceState);

    protected void onStart();

    protected void onStart();   

    protected void onResume();

    protected void onPause();

    protected void onStop();

    protected void onDestroy();

 }

 

这些方法的说明及状态间的变化如下:

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

 setContentView(R.layout.main);

 

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

 if(savedInstanceState!=null){

 savedInstanceState.get("Key");

 }

 

protected void onStart()该方法在 onCreate() 方法之后被调用,或者在 Activity 从 Stop 状态转换为 Active 状态时被调用(onRestart())。

protected void onResume ()在 Activity 从 Pause 状态转换到 Active 状态时被调用。

protected void onPause()在 Activity 从 Active 状态转换到 Pause 状态时被调用。

protected void onStop()在 Activity 从 Active 状态转换到 Stop 状态时被调用。一般我们在这里保存 Activity 的状态信息。

protected void onDestroy()在 Activity 被结束时调用,它是被结束时调用的最后一个方法,在这里一般做些释放资源,清理内存等工作。

原创粉丝点击