Android 活动(Activity)

Android 活动( Activity)

  • 活动代表了一个具有用户界面的单一屏幕,如 Java 的窗口或者帧,Android 的活动是 android.view.ContextThemeWrapper 类的子类。
  • 如同 Java 程序从 main() 函数开始一样,Android 系统初始化它的程序是通过活动中的 onCreate() 回调的调用开始的。
  • 存在有一序列的回调方法来启动一个活动,同时有一序列的方法来关闭活动,如下面的活动声明周期图所示:

图片

  • android.app.Activity 类定义了下面的主要回调方法,可以不用实现所有的回调方法,但是其中的每一个方法都非常重要,实现这些可以保证应用行为如用户所期望的那样。 
回调 描述
onCreate() 这是第一个回调,在活动第一次创建时调用
onStart() 这个回调在活动为用户可见时被调用
onResume() 这个回调在应用程序与用户开始可交互的时候调用
onPause() 被暂停的活动无法接受用户输入,不能执行任何代码。当当前活动将要被暂停,上一个活动将要被恢复是调用
onStop() 当活动不在可见时调用
onDestroy() 当活动被系统销毁之前调用
onRestart() 当活动被停止以后重新打开时调用

生命周期

  • Activity 用于显示用户界面,用户通过 Activity 交互完成相关操作
  • 一个App允许有多个Activity
  • onPause( ) 和 onStop( ) 被调用的前提是:打开了一个新的 Activity,区别是前者的 Activity 还处于可见的状态,后者是旧Activity 已经不可见。

使用流程图

  • Android 中的四大组件,只要定义了,无论用没用,都要在 AndroidManifest.xml 对这个组件进行声明,不然运行时程序会直接退出,报 ClassNotFindException..
  • 如下所示为  Android Studio 3.1.2 创建的 HelloWorld 应用,在其默认的 MaingActivity 文件内容上重写了 onCreate() 方法以外的其它方法:
package com.example.administrator.helloworld;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

/**
 * 一个应用程序可以有1个或多个活动,而没有任何限制。
 * 每个为应用程序所定义的活动都需要在 AndroidManifest.xml 中声明,应用的主活动的意图过滤器标签中需要包含 MAIN 动作和 LAUNCHER 类别
 * 如果 MAIN 动作还是 LAUNCHER 类别没有在活动中声明,那么应用程序的图标将不会出现在主屏幕的应用列表中。
 */
public class MainActivity extends AppCompatActivity {

    String msg = "Android : ";

    /**
     * 当活动第一次被创建时调用
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /**
         * 从项目的 res/layout 中的XML文件加载 UI 组件
         * android.util.Log#d(java.lang.String, java.lang.String) 方法用于在 Logcat 窗口中打印日志
         */

        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");
    }
}

猜你喜欢

转载自blog.csdn.net/wangmx1993328/article/details/82758101