Android的Activity与intent知识点

一、Android 四大组件

  • Activity:用户界面组件,负责与用户交互。

  • Service:后台服务,无界面。

  • Content Provider:数据共享组件。

  • BroadcastReceiver:广播接收器,用于系统或应用间消息通信。


二、Activity 详解

1. 定义与作用

  • 承载用户界面,一个应用可包含多个 Activity。

  • 特殊应用(如后台服务)可以没有界面。

2. 基本用法

  • 注册 :必须在 AndroidManifest.xml 中注册,位于 <application> 标签内。

  • 启动 Activity :使用 <intent-filter> 设置为主入口:

    复制代码
    xml
    
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />

3. 提示机制:Toast

  • 用于短暂提示用户,不占用界面空间。

  • 示例:

    复制代码
    java
    
    Toast.makeText(MainActivity.this, "提示内容", Toast.LENGTH_SHORT).show();

三、Activity 中的菜单

  1. Options Menu:选项菜单,位于 ActionBar。

  2. Context Menu:上下文菜单,长按某控件触发。

  3. SubMenu:子菜单,分组显示功能。

  4. PopupMenu:弹出式菜单,改进上下文菜单显示。

  5. Shortcuts:桌面图标长按菜单。

创建方式

  • XML 资源文件

  • Java 代码动态创建


四、Intent 通信机制

1. 定义与作用

  • Intent 是组件间交互的"意图",可传递数据、执行动作。

  • 用途包括启动 Activity/Service、发送广播、拨打电话等。

2. Intent 的三大作用

  • 指定请求来源、目标与路径

  • 携带数据内容

  • 接收方返回处理结果

3. Intent 属性

属性 方法 说明
Component setComponent() 指定来源与目标组件
Action setAction() 指定动作行为
Data setData() 指定数据路径(如 tel:, http:)
Category addCategory() 附加类别信息
Type setType() 数据类型
Extras putExtras() 附加数据包
Flags setFlags() 活动标志

4. 启动 Activity 的方式

  • 构造函数指定:

    复制代码
    java
    
    Intent intent = new Intent(this, NextActivity.class);
  • setClass 方法:

    复制代码
    java
    
    intent.setClass(this, NextActivity.class);
  • setComponent 方法:

    复制代码
    java
    
    ComponentName component = new ComponentName(this, NextActivity.class);
    intent.setComponent(component);

五、Activity 生命周期

1. 状态管理背景

  • 适应场景:来电、切换应用、屏幕旋转等。

  • 使用**任务栈(LIFO)**管理 Activity。

2. Activity 的四种状态

状态 说明 相关回调
运行状态 位于栈顶,用户可见可交互 onResume()
暂停状态 不在栈顶但仍可见 onPause()
停止状态 完全不可见 onStop()
销毁状态 被移除栈 onDestroy()

3. 生命周期方法

  • onCreate():创建时调用

  • onStart():可见但未交互

  • onResume():可交互

  • onPause():失去焦点

  • onStop():完全不可见

  • onDestroy():销毁

相关推荐
Yang-Never3 小时前
OpenGL ES ->YUV图像基础知识
android·java·开发语言·kotlin·android studio
粤M温同学17 小时前
Android Studio 中安装 CodeBuddy AI助手
android·ide·android studio
阿拉斯攀登20 小时前
【RK3576 安卓 JNI/NDK 系列 07】RK3576 实战(一):JNI 调用 GPIO 驱动点亮 LED
android studio·瑞芯微·嵌入式驱动·安卓驱动·rk3576 gpio控制
阿拉斯攀登2 天前
【RK3576 安卓 JNI/NDK 系列 02】保姆级环境搭建,从 0 到跑通第一个 JNI 程序
android studio·瑞芯微·嵌入式驱动·安卓驱动·安卓ndk环境搭建 jni入门
我命由我123453 天前
Android 开发 - UriMatcher(一个 URI 分类器)
android·java·java-ee·kotlin·android studio·android-studio·android runtime
我命由我123453 天前
Android 多进程开发 - FileDescriptor、Uri、AIDL 接口定义不能抛出异常
android·java·java-ee·kotlin·android studio·android-studio·android runtime
不会写代码的猴子4 天前
Android17版本更新预览
android·android studio
曾经我也有梦想4 天前
Day6 Android启动过程
android studio
71-35 天前
Android studio中真机操作
android·笔记·学习·其他·android studio
71-35 天前
Android studio的安装下载(Android Studio Panda 1 | 2025.3.1 Patch 1 )
android·笔记·学习·android studio