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

相关推荐
Sun_gentle3 天前
android studio创建flutter项目
android·flutter·android studio
我命由我123453 天前
在 Android Studio 中,新建 AIDL 文件按钮是灰色
android·ide·android studio·安卓·android jetpack·android-studio·android runtime
我命由我123453 天前
Android 多进程开发 - AIDL 回调、RemoteCallbackList、AIDL 安全校验
android·java·安全·android studio·安卓·android-studio·android runtime
大狗狗5 天前
AndroidStudio开发环境
android studio
L-李俊漩10 天前
Android studio修改gradle路径
android·android studio
周杰伦fans12 天前
Android Studio Git 管理最佳实践
git·elasticsearch·android studio
火焰中舞蹈的小孩13 天前
Unity和Android Studio相互调用 CH340在unity中调用
android·ide·android studio
FunW1n14 天前
Android Studio与Hook模块开发相关问题及实现方案梳理
android·ide·android studio
我命由我1234514 天前
Kotlin 面向对象 - 匿名内部类、匿名内部类简化
android·java·开发语言·java-ee·kotlin·android studio·android jetpack
catchadmin14 天前
“Fatal error: require(): Failed opening required...” 以及如何彻底避免它再次出现
android·ide·android studio