Android 活动(Activity)

活动表明了一个具备用户界面的单一屏幕,如 Java 的窗口或者帧。Android 的活动是 ContextThemeWrapper 类的子类。java

若是你曾经用 C,C++ 或者 Java 语言编程,你应该知道这些程序从 main() 函数开始。很相似的,Android 系统初始化它的程序是经过活动中的 onCreate() 回调的调用开始的。存在有一序列的回调方法来启动一个活动,同时有一序列的方法来关闭活动,以下面的活动声明周期图所示:android

图片

Activity 类定义了下面的回调。你能够不用实现全部的回调方法。当了解其中的每个很是的重要,实现这些能够保证你的应用行为如用户所指望的那样。编程

回调 描述
onCreate() 这是第一个回调,在活动第一次建立是调用
onStart() 这个回调在活动为用户可见时被调用
onResume() 这个回调在应用程序与用户开始可交互的时候调用
onPause() 被暂停的活动没法接受用户输入,不能执行任何代码。当当前活动将要被暂停,上一个活动将要被恢复是调用
onStop() 当活动不在可见时调用
onDestroy() 当活动被系统销毁以前调用
onRestart() 当活动被中止之后从新打开时调用

实例

这个实例经过简单地步骤展现 Android 应用程序活动的生命周期。按照下面的步骤来修改咱们在 Hello World 实例章节中建立的 Android 应用程序。app

步骤 描述
1 使用eclipse IDE来建立一个Android应用程序,并命名为HelloWorld放在com.example.helloworld包下。如以前Hello World Example章节中介绍。
2 按照下面修改主要活动文件MainActivity.java。保持其余部分不变。
3 运行应用程序来打开Android模拟器,并检查应用程序的修改结果。

下面是主要活动文件src/com.example.helloworld/MainActivity.java修改的内容。里面包含每个基本的生命周期方法。Log.d()方法用来生成日志信息:eclipse

package com.example.helloworld;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;

public class MainActivity extends Activity {
   String msg = "Android : ";

   /** 当活动第一次被建立时调用 */
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      Log.d(msg, "The onCreate() event");
   }

   /** 当活动即将可见时调用 */
   @Override
   protected void onStart() {
      super.onStart();
      Log.d(msg, "The onStart() event");
   }

   /** 当活动可见时调用 */
   @Override
   protected void onResume() {
      super.onResume();
      Log.d(msg, "The onResume() event");
   }

   /** 当其余活动得到焦点时调用 */
   @Override
   protected void onPause() {
      super.onPause();
      Log.d(msg, "The onPause() event");
   }

   /** 当活动再也不可见时调用 */
   @Override
   protected void onStop() {
      super.onStop();
      Log.d(msg, "The onStop() event");
   }

   /** 当活动将被销毁时调用 */
   @Override
   public void onDestroy() {
      super.onDestroy();
      Log.d(msg, "The onDestroy() event");
   }
}

活动类从项目的res/layout中的XML文件加载全部的UI组件。下面的语句从res/layout/activity_main.xml文件中加载UI组件:ide

setContentView(R.layout.activity_main);

一个应用程序能够有1个或多个活动,而没有任何限制。每一个为应用程序所定义的活动都须要在AndroidManifest.xml中声明。应用的主要活动须要在清单中声明,且意图过滤器标签中须要包含 MAIN 动做和 LAUNCHER 类别。以下:函数

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.helloworld"
   android:versionCode="1"
   android:versionName="1.0" >

   <uses-sdk
      android:minSdkVersion="8"
      android:targetSdkVersion="22" />

   <application
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name"
       android:theme="@style/AppTheme" >

       <activity
          android:name=".MainActivity"
          android:label="@string/title_activity_main" >

          <intent-filter>
             <action android:name="android.intent.action.MAIN" />
             <category android:name="android.intent.category.LAUNCHER"/>
          </intent-filter>

       </activity>

   </application>
</manifest>

不管是 MAIN 动做仍是 LAUNCHER 类别没有在活动中声明,那么应用程序的图标将不会出如今主屏幕的应用列表中。工具

让咱们运行起刚刚修改的 "Hellow World!" 应用程序。假设你在环境搭建的时候已经建立了 AVD 。从 Eclipse 运行应用,打开一个项目中的活动文件,并从工具栏点击运行图片图标。Eclipse在AVD上安装应用并启动它。若是一切顺利,将显示模拟器屏幕以下,同时你能够在Eclipse IDE的LogCat窗口中看到日志信息:spa

07-19 15:00:43.405: D/Android :(866): The onCreate() event
07-19 15:00:43.405: D/Android :(866): The onStart() event
07-19 15:00:43.415: D/Android :(866): The onResume() event

让咱们点击 Android 模拟器上的红色按钮图片,它将在Eclipse IDE的LogCat窗口中产生以下的事件消息:日志

<code>07-19 15:01:10.995: D/Android :(866): The onPause() event
07-19 15:01:12.705: D/Android :(866): The onStop() event
</code>

让咱们再次点击 Android 模拟器上的菜单按钮图片,它将在 Eclipse IDE 的 LogCat 窗口中产生以下的事件消息:

<code>07-19 15:01:13.995: D/Android :(866): The onStart() event
07-19 15:01:14.705: D/Android :(866): The onResume() event
</code>

接下来,让咱们点击Android模拟器上的返回按钮图片,它将在Eclipse IDE的LogCat窗口中产生以下的事件消息,Android 应用程序上活动的整个生命周期完成。

07-19 15:33:15.687: D/Android :(992): The onPause() event
07-19 15:33:15.525: D/Android :(992): The onStop() event
07-19 15:33:15.525: D/Android :(992): The onDestroy() event
相关文章
相关标签/搜索