• Android核心组件:Activity


    一、什么是Acticity:

    1. Acticity是用户与应用程序交互的接口
    2. 在应用中通常是一个单独的屏幕页面,用于显示可视化用户界面,并接收与用户交互所产生的事件。
    3. 由视图控件组成,并对事件作出响应。

    二、Acticity类的继承结构:

    Acticity在用户看来是一个界面,而在程序开发者看来是一个java程序。

    • java.lang.Object
      • android.content.ContextWrapper
        • android.view.ContextThemeWrapper
          • android.app.Activity

    三、Activity的子类:

    在这里插入图片描述

    四、Acticity生命周期:

    1. 在android.app.Activity类中,Android定义了一系列方法,在应用程序中通过对这些方法的重写来完成对Activity的创建和使用。
    public class Activity extends ApplicationContext {
    	 //Activity启动后第一个被调用的函数,常用来进行Activity的初始化,例如创建View、绑定数据或恢复信息等。
         protected void onCreate(){}
         //当Activity显示在屏幕上可见时,该函数被调用。
         protected void onStart(){}
         //当Activity获得焦点,能够与用户交互,接受用户输入时,该函数被调用。此时的Activity位于Activity栈的栈顶。
         protected void onResume(){}
         //当Activity失去焦点,进入暂停状态时,该函数被调用。一般用来保存持久的数据或释放占用的资源。
         protected void onPause(){}
         //当Activity不可见进入后台时,该函数被调用。
         protected void onStop(){}
         //当Activity回到前台,再次可见时,调用该函数。
         protected void onRestart(){}
         //在Activity销毁时,该函数被调用。
         protected void onDestroy() {}
    }
    
    onCreate:在首次创建 Activity 时调用。系统向此方法传递一个 Bundle 对象,其中包含 Activity 的上一状态,不过前提是捕获了该状态,而后会调用onStart方法。(可以在此方法中执行所有正常的静态设置 ,比如:创建视图、将数据绑定到列表等等。)
    onStart:在 Activity 即将对用户可见之前调用。而后如果Activity转入了前台就会调用onResume方法。 如果此时直接屏幕熄灭或者用户按下home键则会直接调用onStop方法,当然这种情况比较极端。
    onResume:在 Activity 即将开始与用户进行交互之前调用。 此时,Activity 处于 Activity 堆栈的顶层,并具有用户输入焦点。当跳转另一个Activity,或者退出当前Activity后会调用onPause方法。
    onPause:在系统即将开始继续另一个 Activity 时调用。 此方法通常用于确认对持久性数据的未保存更改、停止动画以及其他可能消耗 CPU 的内容,诸如此类。 它应该非常迅速地执行所需操作,因为它返回后,下一个 Activity 才能继续执行,所以不能执行耗时操作。而后正常情况下会调用onStop方法。但是有一种极端情况,就是如果这个时候快速让 当前Activity 返回前台,则会调用onResume方法。
    onStop:在 Activity 对用户不再可见时调用。如果 Activity 被销毁,或另一个 Activity(一个现有 Activity 或新 Activity)继续执行并将其覆盖,就会调用此方法。而后如果 Activity 恢复与用户的交互,则会调用 onRestart 方法,如果 Activity 被销毁,则会调用onDestroy方法。
    onRestart:在Activity被停止后再次启动时调用(即屏幕熄灭后再次回到app,按下home键后再次回到app),而后会调用onStart方法。
    onDestroy:在 Activity 被销毁前调用,这是 Activity 收到的最后调用。 当 Activity 结束(对 Activity 调用了 finish 方法),或系统为节省空间而暂时销毁该 Activity 实例时,可能会调用它。 你可以通过 isFinishing 方法区分这两种情形。
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    1. Activity类其他方法:
      在这里插入图片描述

    五、Activity常用事件:

    onKeyDown(int keyCode,KeyEvent event)//对应按键按下事件
    onKeyUp(int keyCode,KeyEvent event)//对应按键松开事件
    onTouchEvent(MotionEvent event)//对应点击屏幕事件
    
    • 1
    • 2
    • 3

    六、Activity类创建:

    1. 创建一个Activity子类,重写onCreate()方法,Activity启动时会调用该方法。该方法调用Activity的setContentView(View view)方法来显示Activity对应的View布局文件。
    public class MainActivity extends Activity {
    		protected void onCreate(Bundle savedInstanceState) {
    				super.onCreate(savedInstanceState);//调用父类的onCreate()方法
    				setContentView(R.layout.main);//调用布局文件
    				......
    		}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 每一个Activity都需要在AndroidManifest.xml文件中注册。

    AndroidManifest.xml文件是一个全局配置文件,每增加一个Activity,都需要在AndroidManifest.xml进行配置。方法:

    • 元素添加相应的 子元素。
    • 标签中有一个必选属性android:name:Activity类名
    • android:label指定应用程序列表中程序图标下方的文字,如Activity未指定该属性,系统会使用 标签的android:label属性值来代替。
    • android:icon属性值指定Activity对应的图标,如果未指定,则系统会使用 标签的android:icon 属性值来代替。
      在这里插入图片描述
    1. 创建该Activity类的布局文件 (比如main.xml)。
    
    <LinearLayout 				
    	xmlns:android="http://schemas.android.com/apk/res/android"
    	android:orientation="vertical" 			
    	android:layout_width="fill_parent"		
    	android:layout_height="fill_parent">		
    	<TextView 						
    		android:layout_width="fill_parent"			
    		android:layout_height="wrap_content" 		
    		android:text="@string/hello" />			
    LinearLayout>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    关于组件中的@string/hello :
    可以将所有要显示的文字信息直接在values\strings.xml文件中进行配置:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    	<string name="hello">Hello World, Hello!</string>
    </resources>
    
    • 1
    • 2
    • 3
    • 4

    关于组件中的@+id/mytext
    @+id固定,表示给该组件创建一个ID,后跟的mytext表示组件名,作用是在java程序中通过组件id取得该组件,进行相关监听器和属性的配置。

    1. 在Activity对应的布局文件中添加必要控件。

    七、总结:

    • Android项目由若干个Activity程序所组成,每一个Activity都是一个Java类,都需要在AndroidManifest.xml文件中注册;
    • 一个Android项目中所有用到的资源都保存在res文件夹之中;
    • Android中的组件需要在布局管理器中进行配置,之后在Activity程序中可以使用findViewById()方法查找并进行控制;
    • 在布局管理器中定义的每一个组件都有其对应的操作类,用户可以直接实例化这些类的对象进行组件的定义显示;
    • 标准的Android项目,所有的文字显示信息应该保存在strings.xml文件中保存。
  • 相关阅读:
    十年架构师:读懂这篇微服务实战笔记,金九银十薪资直接翻倍
    Transformer貌似也是可以使用state递归解码和训练的
    7.MySQL DQL(数据查询语言) 语句
    RSS订阅微信公众号初探-feed43
    2023年最新一面二面通关王炸java八股文面试题--持续更新
    通过 TiUP 部署 TiDB 集群的拓扑文件配置
    微信、支付宝、携程等多款app任意文件读取漏洞
    安全进阶:SSH实验配置指导
    react笔记基础部分(组件生命周期路由)
    Linux进程信号
  • 原文地址:https://blog.csdn.net/m0_53881899/article/details/126701429