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():销毁

相关推荐
斯文by累1 天前
Android Studio 2025 SDK路径配置指南
android studio
iwanghang1 天前
Android Studio 2023.2.1 新建项目 不能选择Java 解决方法
android·ide·android studio
我命由我123451 天前
Android 控件 - 最简单的 Notification、Application Context 应用于 Notification
android·java·开发语言·junit·android studio·android jetpack·android-studio
qq_426003962 天前
android studio抓安卓日志使用方式
android·ide·android studio
JMchen1232 天前
Android音频编码原理与实践:从AAC到Opus,深入解析音频编码技术与移动端实现
android·经验分享·学习·kotlin·android studio·音视频·aac
JMchen1232 天前
Android剪切板工具类ClipBoardUtil:简化剪切板操作
android·java·移动开发·android studio
带着地球去浪一浪2 天前
Android Studio安排与配置(附图)
android·ide·android studio
JMchen1232 天前
Android音频处理全解析:从3A算法到空间音频,打造专业级音频体验
android·经验分享·算法·kotlin·android studio·音视频
weixin_440784112 天前
Java线程池工作原理浅析
android·java·开发语言·okhttp·android studio·android runtime
彬sir哥3 天前
android studio如何把.gradle从C盘移到D盘
android·gradle·maven·android studio