【 Android 】Activity 和 AndroidManifest.xml

前言:

      本系列文章这是笔者在学习Android studio开发过程中的一些知识点总结,此文章主要介绍Activity、AndroidManifest.xml清单文件、相关实验的实现,相关的Android studio开发的环境搭建和项目创建等问题可以在网上找到相关的文章学习。


目录:

目录

前言:

目录:

1、Activity介绍

2、Activity常用的使用方法介绍

3、AndroidManifest.xml清单文件介绍

1.包名(Package Name),唯一标识应用程序。

2.应用组件(Components)Activity,定义用户界面的一个屏幕或窗口。

3. Service 定义后台服务。

4.Broadcast Receiver,定义广播接收器,用于接收并处理广播消息。

5.Content Provider,提供数据访问接口,允许其他应用读取或修改数据。

6.权限(Permissions),声明应用需要的权限,以及授予其他应用的权限。

7.Application 标签属性,包含应用级别的配置信息。

8. Intent Filters,定义组件如何响应特定类型的意图。

9.Metadata,为组件提供额外的配置数据。

10.支持的屏幕尺寸和密度,声明应用支持的屏幕配置。

11.使用的硬件特性,声明应用需要的硬件特性。

12.Version Code 和 Version Name,指定应用程序版本。

4、创建Activity实验:

实现步骤一:MainActivity默认生成代码:

实现步骤二:创建BaseAtivity.java代码如下:

实现步骤三:编辑AndroidManifest.xml清单文件

实现效果:

BaseActivity运行效果:

MainActivity 运行效果:

结论:

5、Logcat调试了解Activity生命周期

实现步骤一:创建LifeTestActivity.java代码如下:

实现步骤二:编辑AndroidManifest.xml清单文件

LifeTestActivity运行效果:

结论:

总结:


1、Activity介绍

Activity是Android应用程序中最基本,最常用的用户可视化交互组件,一个Activity代表一个单独的屏幕窗口。

2、Activity常用的使用方法介绍

方法

功能描述

setContentView(int layoutResID)

设置Activity界面布局

onCreate(Bundle saveInstanceState)

Activity生命周期方法,用于第一次创建Activity

onStart()

Activity生命周期方法,启动Activity

onPause()

Activity生命周期方法,暂停Activity

onStop()

Activity生命周期方法,停止Activity

onDrestroy()

Activity生命周期方法,销毁Activity

onResume()

Activity生命周期方法,将暂停的Activity暂停状态恢复

onRestart()

Activity生命周期方法,将停止的Activity停止状态恢复

onKeyDown(int keyCode , KeyEvent event)

键盘按键按下时的动作事件处理方法

onKeyUp(int keyCode,KeyEvent event)

键盘案件抬起时的动作事件处理方法

onTouchEvent(MotionEvent event)

监听屏幕的触摸事件处理方法

openContextMenu(View view)

开启上下文菜单

setResult(int resultCode)

返回数据给上一个Activity

startActivityForResult(Intent intent,int requestCode)

携带数据并跳转Activity

Finish()

结束当前Activity

3、AndroidManifest.xml清单文件介绍

AndroidManifest.xml清单文件是整个Android应用程序的全局描述配置文件,也是每个Android应用程序必须有的且放在根目录下的文件。通常包括以下信息项。

1.包名(Package Name)唯一标识应用程序。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
  • package 属性指定了应用程序的包名。这个包名必须是唯一的,并且通常与你的代码所在的顶级包名一致。
2.应用组件(Components)Activity定义用户界面的一个屏幕或窗口。
<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
  • android:name:Activity 的类名,可以是相对路径(相对于包名)或绝对路径。
3.Service 定义后台服务。
<service android:name=".MyBackgroundService" />
  • android:name:Service 的类名。
  • 可以通过 intent-filter 来定义 Service 响应的 Intent 类型。
4.Broadcast Receiver定义广播接收器,用于接收并处理广播消息。
<receiver android:name=".MyBroadcastReceiver">
    <intent-filter>
        <action android:name="com.example.MY_ACTION" />
    </intent-filter>
</receiver>
  • android:name: Broadcast Receiver 的类名。
  • intent-filter:定义了接收器监听的广播类型。
5.Content Provider提供数据访问接口,允许其他应用读取或修改数据。
<provider android:name=".MyContentProvider"
    android:authorities="com.example.myapp.provider" />
6.权限(Permissions)声明应用需要的权限,以及授予其他应用的权限。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  • android:name:所需的权限名称。
  • 还可以通过 <permission> 标签自定义权限。
7.Application 标签属性包含应用级别的配置信息。
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
android:theme="@style/AppTheme">
  • android:allowBackup:是否允许备份应用数据。
  • android:icon:应用图标资源。
  • android:label:应用名称资源。
  • android:roundIcon:圆角图标资源(适用于支持圆形图标的设备)。
  • android:supportsRtl:是否支持从右到左布局。
  • android:theme:应用主题资源。
8.Intent Filters定义组件如何响应特定类型的意图。
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="http" />
</intent-filter>
  • action:指定组件响应的动作类型。
  • category:指定组件响应的类别。
  • data:指定组件响应的数据类型(如 URL 方案、MIME 类型等)。
9.Metadata为组件提供额外的配置数据。
<meta-data android:name="com.example.KEY" android:value="value" />
  • android:name:元数据键名。
  • android:value:元数据值。
10.支持的屏幕尺寸和密度声明应用支持的屏幕配置。
<supports-screens android:smallScreens="true"
    android:normalScreens="true"
    android:largeScreens="true"
android:xlargeScreens="true" />
  • 各个属性分别表示是否支持小屏、普通屏、大屏和超大屏。
11.使用的硬件特性,声明应用需要的硬件特性。
<uses-feature android:name="android.hardware.camera" android:required="true" />
  • android:name:硬件特性的名称。
  • android:required:是否必须具备该硬件特性才能安装应用。
12.Version Code 和 Version Name指定应用程序版本。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp"
    android:versionCode="1"
android:versionName="1.0">
  • android:versionCode:内部版本号,用于版本控制。
  • android:versionName:显示给用户的版本名称。

示例完整的 AndroidManifest.xml

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

    <!-- 权限声明 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <!-- 硬件特性声明 -->
    <uses-feature android:name="android.hardware.camera" android:required="true" />

    <!-- 支持的屏幕尺寸 -->
    <supports-screens android:smallScreens="true"
        android:normalScreens="true"
        android:largeScreens="true"
        android:xlargeScreens="true" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <!-- Activity 声明 -->
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- Service 声明 -->
        <service android:name=".MyBackgroundService" />

        <!-- Broadcast Receiver 声明 -->
        <receiver android:name=".MyBroadcastReceiver">
            <intent-filter>
                <action android:name="com.example.MY_ACTION" />
            </intent-filter>
        </receiver>

        <!-- Content Provider 声明 -->
        <provider android:name=".MyContentProvider"
            android:authorities="com.example.myapp.provider" />
    </application>
</manifest>

4、创建Activity实验:

    观察继承Android.app.Activity基类的方法实现Activity对比通过继承androidx.appcompat.appAppCompatActivity类的方式实现Activity的异同

实现步骤一:MainActivity默认生成代码:
package com.example.text_1_activity_2025_3_18;

import android.os.Bundle;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
    }
}
实现步骤二:创建BaseAtivity.java代码如下:
package com.example.text_1_activity_2025_3_18;

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

public class BaseActivity extends Activity{
    @Override
    protected void onCreate(Bundle saveInstanceState) {
        super.onCreate(saveInstanceState);
        setContentView(R.layout.activity_main);
    }
}
实现步骤三:编辑AndroidManifest.xml清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Text_1_activity_2025_3_18"
        tools:targetApi="31">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

        <!--添加BaseActivity包-->
        <activity
            android:name=".BaseActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>


    </application>

</manifest>
实现效果:
BaseActivity运行效果:

MainActivity 运行效果:

结论:

   观察可以得出通过继承Android.app.Activity基类的方法实现Activity,屏幕界面会缺少标题栏,通过继承androidx.appcompat.appAppCompatActivity类的方式实现Activity屏幕界面有标题栏(紫色,默认无文字标题)。

5、Logcat调试了解Activity生命周期

实现步骤一:创建LifeTestActivity.java代码如下:
package com.example.text_1_activity_2025_3_18;

import android.os.Bundle;
import android.util.Log;
import androidx.annotation.Nullable;
import android.app.Activity; // 请确保导入Activity类

public class LifeTestActivity extends Activity { // 确保继承自Activity或AppCompatActivity
    private static final String TAG = "LifeTestActivity";

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState){ // 修改参数名称以匹配标准命名
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); // 确保R文件中有正确的布局引用
        Log.d(TAG,"执行了onCreate()方法");
    }

    @Override
    protected void onStart(){
        super.onStart();
        Log.d(TAG,"执行了onStart()方法");
    }

    @Override
    protected void onResume(){
        super.onResume(); // 调用正确的super方法
        Log.d(TAG,"执行了onResume()方法");
    }

    @Override
    protected void onStop(){
        super.onStop(); // 调用正确的super方法
        Log.d(TAG,"执行了onStop()方法");
    }

    @Override
    protected void onPause(){
        super.onPause(); // 调用正确的super方法
        Log.d(TAG,"执行了onPause()方法");
    }

    @Override
    protected void onRestart(){
        super.onRestart(); // 调用正确的super方法
        Log.d(TAG,"执行了onRestart()方法");
    }

    @Override
    protected void onDestroy(){
        super.onDestroy(); // 调用正确的super方法
        Log.d(TAG,"执行了onDestroy()方法");
    }
}
实现步骤二:编辑AndroidManifest.xml清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Text_1_activity_2025_3_18"
        tools:targetApi="31">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

        <!--添加BaseActivity包-->
        <activity
            android:name=".BaseActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <!--添加LifeTestActivity-->
        <activity
            android:name=".LifeTestActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

</manifest>
LifeTestActivity运行效果:

  运行LifeTestActivity后,在App正常启动后,点击调试窗口Logcat查看Activity生命周期的变化。

结论:

   Android Activity的生命周期管理,通过覆盖`onCreate()`、`onStart()`、`onResume()`、`onPause()`、`onStop()`、`onRestart()`和`onDestroy()`等方法并添加日志记录,了解和跟踪Activity在不同状态下的行为。其主要目的是教育和调试,能够直观地看到Activity生命周期的变化,确保应用正确响应用户操作和系统事件,从而构建更加稳定和高效的应用。修正后的代码确保每个生命周期方法调用正确的`super`方法,保证Activity正常运行。

后语:

这是笔者自己在Android开发学习过程中的相关实验和笔记,后续会保持更新,如果喜欢读者的文章的话可以给读者一个小小的赞,谢谢各位!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qizerone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值