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

目录:
目录
2.应用组件(Components)Activity,定义用户界面的一个屏幕或窗口。
4.Broadcast Receiver,定义广播接收器,用于接收并处理广播消息。
5.Content Provider,提供数据访问接口,允许其他应用读取或修改数据。
6.权限(Permissions),声明应用需要的权限,以及授予其他应用的权限。
7.Application 标签属性,包含应用级别的配置信息。
8. Intent Filters,定义组件如何响应特定类型的意图。
12.Version Code 和 Version Name,指定应用程序版本。
实现步骤三:编辑AndroidManifest.xml清单文件
实现步骤一:创建LifeTestActivity.java代码如下:
实现步骤二:编辑AndroidManifest.xml清单文件
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开发学习过程中的相关实验和笔记,后续会保持更新,如果喜欢读者的文章的话可以给读者一个小小的赞,谢谢各位!
1031

被折叠的 条评论
为什么被折叠?



