Android四大组件之Activity详解

yizhihongxing

Android四大组件之Activity详解

什么是Activity

Activity是一种Android四大组件之一,每个Activity代表app的一个UI界面,用户可以与之进行交互。它是实现用户界面的核心组件之一,相当于Windows中的一个窗口或Frame。

如何创建Activity

通过Android Studio创建Activity

Android Studio是专门为Android开发打造的IDE,它内置的创建Activity功能使得我们在创建Activity上变得非常容易。以创建一个名为MainActivity的Activity为例,操作步骤如下:

  • 打开Android Studio,选择File->New->New Project,输入工程名和包名等信息。
  • 在project结构中,右键app文件夹,选择New->Activity->Empty Activity,输入Activity名MainActivity,点击Finish。

通过上述步骤,我们成功创建了一个名为MainActivity的Activity。

通过继承Activity创建Activity

我们同样可以通过继承Activity来创建自己的Activity。以一个名为MyActivity的Activity为例,代码如下:

public class MyActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
    }
}

生命周期

Activity有生命周期,即Activity从创建到销毁的过程就是它的生命周期。Activity的生命周期是从系统广播中心得到的信号,类似生命的重要器官的心跳一样。生命周期方法如下:

  • onCreate:Activity被创建时调用
  • onStart:Activity变成可见状态时调用
  • onResume:Activity获得焦点时调用
  • onPause:Activity失去焦点时调用
  • onStop:Activity不再可见时调用
  • onDestroy:Activity被销毁时调用

生命周期示例1

以一个由MainActivity启动MyActivity的例子来说明Activity的生命周期。

MainActivity.java代码:

public class MainActivity extends Activity {

    private Button mButton;
    private Intent mIntent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mButton = findViewById(R.id.button);
        mIntent = new Intent(this,MyActivity.class);
       mButton.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               startActivity(mIntent);
           }
       });

    }
}

MyActivity.java代码:

public class MyActivity extends Activity {

    private static final String TAG = "MyActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        Log.d(TAG,"onCreate");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d(TAG,"onStart");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d(TAG,"onResume");

    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d(TAG,"onPause");

    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d(TAG,"onStop");

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG,"onDestroy");
    }
}

运行后,点击MainActivity中的Button,可以看到MyActivity的生命周期。

生命周期示例2

以一个跨越多个Activity的例子来说明Activity的生命周期。

AppActivity.java代码:

public class AppActivity extends Activity {

    private Button mButton;
    private Intent mIntent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_app);

        mButton = findViewById(R.id.button);
        mIntent = new Intent(this,MainActivity.class);
       mButton.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               startActivity(mIntent);
           }
       });

    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d("AppActivity","onStart");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d("AppActivity","onResume");

    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d("AppActivity","onPause");

    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d("AppActivity","onStop");

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d("AppActivity","onDestroy");
    }
}

MainActivity.java代码:

public class MainActivity extends Activity {

    private Button mButton;
    private Intent mIntent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mButton = findViewById(R.id.button);
        mIntent = new Intent(this,MyActivity.class);
       mButton.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               Intent intent = new Intent(MainActivity.this,AppActivity.class);
               startActivity(intent);
           }
       });

    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d("MainActivity","onStart");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d("MainActivity","onResume");

    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d("MainActivity","onPause");

    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d("MainActivity","onStop");

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d("MainActivity","onDestroy");
    }
}

MyActivity.java代码:

public class MyActivity extends Activity {

    private static final String TAG = "MyActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        Log.d(TAG,"onCreate");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d(TAG,"onStart");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d(TAG,"onResume");

    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d(TAG,"onPause");

    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d(TAG,"onStop");

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG,"onDestroy");
    }
}

运行后,可以通过log查看各个Activity的生命周期。点击Button后,MainActivity和MyActivity才会经过生命周期,而AppActivity在之前已经被创建过,因此只展现了onStart和onResume周期。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android四大组件之Activity详解 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 详解Linux下调试器GDB的基本使用方法

    详解Linux下调试器GDB的基本使用方法 介绍 GDB是GNU开源组织发布的一个强大的、灵活的、可扩展的、免费的调试器,可以用于多种编程语言,例如C、C++、Fortran等。使用GDB可以检查程序运行的状态,跟踪代码执行流程,查找错误等。本攻略将详细介绍在Linux下如何使用GDB进行程序调试。 安装 在Linux中安装GDB非常简单,只需要在终端中输入…

    other 2023年6月20日
    00
  • PHP程序员简单的开展服务治理架构操作详解(二)

    首先,“PHP程序员简单的开展服务治理架构操作详解(二)”指的是一篇针对PHP程序员的文章,主要介绍在开展服务治理架构操作过程中需要注意的事项和步骤。 在文章中,作者提到了以下几点内容: 1. 服务治理的基础 作者首先介绍了服务治理的基础,即服务注册与发现、配置管理、流量管理和链路追踪。 其中,服务注册与发现指的是把所有服务都注册到一个服务注册中心,并且能够…

    other 2023年6月27日
    00
  • VB6.0基本控件介绍与使用方法

    VB6.0基本控件介绍与使用方法 VB6.0是一款常用于开发Windows桌面应用程序的集成开发环境。其中,基本控件是开发VB6.0桌面应用程序中的重要组成部分之一。本文将为您介绍常用的VB6.0基本控件及其使用方法。 Label控件 Label控件是VB6.0中最简单的控件之一。它用于显示纯文本,可用于显示程序状态信息、提示信息或标签。Label控件属性中…

    other 2023年6月27日
    00
  • JVM 运行时数据区与JMM 内存模型

    JVM 运行时数据区与JMM 内存模型攻略 1. JVM 运行时数据区 JVM(Java虚拟机)运行时数据区是指在Java程序执行期间,用于存储数据和执行指令的内存区域。JVM运行时数据区主要包括以下几个部分: 1.1 方法区(Method Area) 方法区用于存储类的结构信息,包括类的字段、方法、构造函数、接口等。方法区是被所有线程共享的内存区域。 示例…

    other 2023年8月2日
    00
  • JAX-WS 学习一:基于java的最简单的WebService服务

    JAX-WS 学习一:基于java的最简单的WebService服务的完整攻略 JAX-WS是Java API for XML Web Services的缩写,是Java EE平台中用于开发Web服务的标准API。本文将为您提供一份完整攻略,介绍如何使用JAX-WS开发基于Java的最简单的WebService服务,包括服务端和客户端的实现,以及两个示例说明…

    other 2023年5月5日
    00
  • 跟我学Makefile(二)

    跟我学Makefile(二) 在上一篇跟我学Makefile中,我们学习了一些基础的Makefile语法和命令。在本文中,我们将继续深入了解如何使用Makefile自动化构建我们的代码。 变量 Makefile支持定义变量,可以提高代码的复用性和可维护性。变量可以用于定义命令、文件列表等。 变量的定义格式是变量名 = 值。例如: CC = gcc CFLAG…

    其他 2023年3月28日
    00
  • bigdecimal取绝对值

    BigDecimal取绝对值攻略 以下是BigDecimal取绝对值的完整攻略: 什么是BigDecimal? BigDecimal是Java中的一个高精度数字类,它可以处理比double和float更大范围的数字,并且可以保证精度不失。 步骤1:创建一个BigDecimal对象 首先,创建一个BigDecimal对象,于存储需要取绝值的数字。 BigDec…

    other 2023年5月6日
    00
  • PHP的instanceof详解及使用方法介绍

    PHP的instanceof详解及使用方法介绍 instanceof是什么? instanceof是PHP中的一个用来判断一个对象是否属于某一个类或其父类的实例。它的语法格式为:$object instanceof Class,其中$object是对象实例,Class是类名。如果$object是Class的实例或Class的父类的实例,则返回true,否则返…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部