Android四大组件之Activity详解

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日

相关文章

  • ios本地通知

    当然,我可以为您提供有关“iOS本地通知”的完整攻略,以下是详细说明: 什么是iOS本地通知? iOS本地通知是一种在iOS设备上发送通知的方式,它可以在应用程序未运行时向用户发送通知。本地通知可以用于提醒用户执行某些操作,如提醒用户完成任务、提醒用户查看新消息等。 iOS本地通知的实现步骤 以下是实现iOS本地通知的详细步骤: 导入UserNotifica…

    other 2023年5月7日
    00
  • Ruby中的block代码块学习教程

    Ruby中的block代码块学习教程 什么是block代码块? 在Ruby中,block代码块是一种被包含在花括号({ })或者do/end关键字中的、可被传递给方法并随后被调用的一段代码集合。 为什么需要block代码块? block代码块有以下两个作用: 可以将一段代码当做一个参数传递给方法; 可以在方法内部定义灵活的逻辑实现,实现代码的可重用性和可扩展…

    other 2023年6月27日
    00
  • ASP.NET Core MVC 过滤器(Filter)

    ASP.NET Core MVC 过滤器(Filter)攻略 过滤器(Filter)是ASP.NET Core MVC中的一个重要概念,它允许我们在请求处理过程中插入自定义逻辑。过滤器可以用于处理请求前后的操作,例如身份验证、日志记录、异常处理等。本攻略将详细介绍ASP.NET Core MVC过滤器的使用方法,并提供两个示例说明。 过滤器的类型 ASP.N…

    other 2023年8月20日
    00
  • C#面试题总结——程序设计基础

    C#面试题总结——程序设计基础 C#语言无疑是现在应用最广泛的一种编程语言之一,面对越来越激烈的竞争,对于C#程序员而言,打好程序设计基础,掌握C#编程是关键。以下是本文整理的C#面试题,旨在帮助C#程序员提高自己的技能水平。 一、数据类型 1.1 值类型和引用类型 在C#中,值类型和引用类型是两种不同的类型,它们存储在内存中的位置也不同。 值类型存储在栈中…

    其他 2023年3月28日
    00
  • vbscript Registry 注册表操作实现代码(读写删除)

    以下是使用VBScript操作注册表实现读取、写入和删除的完整攻略: 读取注册表键值 要读取注册表中的键值,可以使用GetObject函数和WScript.Shell对象的RegRead方法。示例代码如下: Set WshShell = CreateObject(\"WScript.Shell\") value = WshShell.Re…

    other 2023年10月15日
    00
  • 关于C# 类的封装详情

    关于C# 类的封装详情 在 C# 中,封装是面向对象编程中的重要概念之一。封装允许你隐藏具体的实现,只对外部公开一些特定的方法或属性,从而更好地保护数据安全性并增强代码的可读性和可维护性。下面我们一起来详细讲解一下 C# 类的封装策略及实现细节。 一、封装的基本概念 封装分为两个方面的意义:一是将对一类对象的处理过程限制在该类对象的内部,而对外部不公开,这称…

    other 2023年6月25日
    00
  • 使用AngularJS实现表单向导的方法

    使用AngularJS实现表单向导的方法 表单向导是一种常见的用户界面模式,用于引导用户完成复杂的表单填写过程。在AngularJS中,可以通过以下步骤实现表单向导: 步骤1:设置表单数据模型 首先,我们需要定义一个数据模型来存储表单的各个步骤的数据。可以使用AngularJS的$scope对象来创建一个空的数据模型,例如: $scope.formData …

    other 2023年8月21日
    00
  • 重新安装.netframework1.0

    重新安装.NET Framework 1.0 如果您的计算机上出现了.NET Framework 1.0的问题,例如无法安装或运行应用程序,您可能需要重新安装.NET Framework 1.0。本攻略将详细介绍如何重新安装.NET 1.0,包括安装的步骤和两个示例说明。 安装步骤 以下是重新安装.NET Framework 1.的步骤: 下载.NET Fr…

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