Action/Data/CategoryExtras/Flags

Intent详解
本文详细介绍了Android系统中Intent的作用及组成部分,包括Action、Data、Category和Extras等,并解释了这些部分如何共同工作以实现组件间的交互。

 

一个字符串为请求的动作命名或者对于broadcast intent, 发生的并且正在被报告的动作例如:

常量

目标组件

动作

ACTION_CALL

activity

发起一个电话呼叫.

ACTION_EDIT

activity

显示数据给用户来编辑.

ACTION_MAIN

activity

将该activity作为一个task的第一个activity启动,不传入参数也不期望返回值.

ACTION_SYNC

activity

将设备上的数据和一个服务器同步.

ACTION_BATTERY_LOW

broadcast receiver

发出电量不足的警告.

ACTION_HEADSET_PLUG

broadcast receiver

一个耳机正被插入或者拔出.

ACTION_SCREEN_ON

broadcast receiver

屏幕被点亮.

ACTION_TIMEZONE_CHANGED

broadcast receiver

时区设置改变.

ACTION_DIAL

activity

启动系统拨号程序和其他拨号程序,并显示Data里指定的电话号码

ACTION_SENDTO

activity

向Data里描述的目标地址发送数据

你也可以定义自己的action字符串用来启动你的应用程序自定义的action应该包含应用程序的包名.例如"com.example.project.SHOW_COLOR".

action很大程度上决定了intent的另外部分的结构就像一个方法名决定了它接受的参数和返回值一样因此最好给action一个最能反映其作用的名字.

一个intent对象中的action是使用getAction()setAction()来读写的.

Data
需要操作的数据的URI和它的MIME(多用途互联网邮件扩展,Multipurpose Internet Mail Extensions)类型例如如果actionACTION_EDIT, 那么Data将包含待编辑的数据URI. 如果actionACTION_CALL, Data将为tel:电话号码的URI. 如果actionACTION_VIEW, Datahttp:网络地址的URI.

当将一个intent和一个组件相匹配时除了URI外数据类型也很重要例如一个显示图片的程序不应该用来处理声音文件.

数据类型常常可以从URI推断特别是content:URI, 它表示该数据属于一个content provider. 但数据类型也可以被intent对象显示声明. setData()方法设置URI, setType()方法指定MIME类型, setDataAndType()设置数据URIMIME类型它们可以使用getData()getType()来读取.

Category
一个字符串,包含了关于处理该intent的组件的种类的信息一个intent对象可以有任意个category. intent类定义了许多category常数例如:

常量

含义

CATEGORY_BROWSABLE

目标activity可以使用浏览器来显示-例如图片或电子邮件消息.

CATEGORY_GADGET

activity可以被包含在另外一个装载小工具的activity.

CATEGORY_HOME

activity显示主屏幕,也就是用户按下Home键看到的界面.

CATEGORY_LAUNCHER

activity可以作为一个任务的第一个activity,并且列在应用程序启动器中.

CATEGORY_PREFERENCE

activity是一个选项面板.

addCategory()方法为一个intent对象增加一个category, removeCategory删除一个category, getCategories()获取intent所有的category.

Extras
为键-值对形式的附加信息例如ACTION_TIMEZONE_CHANGED的intent有一个"time-zone"附加信息来指明新的时区ACTION_HEADSET_PLUG有一个"state"附加信息来指示耳机是被插入还是被拔出.

intent对象有一系列put...()set...()方法来设定和获取附加信息这些方法和Bundle对象很像事实上附加信息可以使用putExtras()getExtras()作为Bundle来读和写.

Flags

各种标志很多标志指示android系统如何启动一个activity(例如该activity属于哪个任务)和启动后如何处理它(例如它是否属于最近activity列表中).

android系统和应用程序使用intent对象来送出系统广播和激活系统定义的组件.

 

<think> 嗯,用户这次的问题集中在安卓系统data分区下的路径归属问题,特别是想区分哪些属于文件系统占用。结合用户提供的三个引用材料来看,ta应该是个有安卓系统调试经验的开发者或高级用户,之前遇到过权限问题和日志分析需求(引用2提到root后用adb pull的权限技巧,引用1和3涉及MTKLogger和ANR日志分析)。 用户提到的路径中,/data/adb和/data/aee_exp需要重点分析。根据引用1的信息,aee_exp是MTK芯片设备的异常日志目录,通常由系统服务写入;而引用2中用户操作/data/data目录的经验表明ta熟悉Android沙箱机制。这里需要明确“文件系统占用”的定义——是指系统核心功能占用的不可删除空间?还是指用户数据存储?从技术角度看,系统守护进程(如adbd、aee)运行所需的持久化数据才属于真正的文件系统占用。 注意到用户特意强调“不是用户真正需求”,说明ta可能想清理磁盘空间,但担心误删系统关键文件。比如引用2提到的cache文件其实是可重建的临时文件,而/data/adb里的Magisk模块如果被删除会导致root失效。需要帮ta区分“可安全清理”和“必须保留”的目录。 另外用户没提但隐含的需求可能是存储空间不足的排查。可以补充说明这些目录的典型大小:aee_exp单次异常日志约10-50MB但可定期清理,adb目录通常不超过100MB,真正耗空间的往往是/data/app和/data/media。不过用户既然只问特定路径,回答应聚焦在归属分类上。 最后生成的三个问题都围绕存储分析延伸:问题1教ta用du命令量化占用,问题2针对系统日志清理(呼应引用1的MTKLogger路径),问题3则关联到引用3的ANR日志存储位置。这样既解答当前问题,又预判了后续操作需求。 </think> 根据Android系统文件分区标准和引用内容分析,**/data/adb 和 /data/aee_exp 均属于系统级文件占用**,具体归类如下: ### 路径归属分析 1. **/data/aee_exp** - 存储芯片级异常日志(如KE崩溃日志) - **归属:文件系统占用** - 依据:引用[1]明确说明,当发生内核级异常(KE重启)时,MTKLogger未启动,系统会直接在此目录生成崩溃日志。此为芯片厂商(如MTK)的底层诊断机制[^1]。 2. **/data/adb** - 通常存放Magisk等root管理工具的核心模块 - **归属:文件系统占用** - 依据:该目录需root权限访问(与引用[2]中`/data/data/`权限问题类似),存储系统级root组件,直接影响设备特权状态[^2]。 3. **对比用户数据路径** - `/data/data/package_name/`(引用[2]):**用户应用占用**,受应用沙盒限制 - `/sdcard/`:**用户存储分区**,无需root即可访问 ### 关键区分特征 | 路径 | 占用类型 | 访问权限 | 是否可安全删除 | |--------------------|--------------|--------------|--------------| | `/data/aee_exp` | 系统诊断日志 | 需root | ❌ 影响问题诊断 | | `/data/adb` | root系统组件 | 需root | ❌ 导致root失效 | | `/data/data/...` | 用户应用数据 | 需root或应用权限 | ⚠️ 部分可清理 | | `/sdcard/...` | 用户文件 | 无需root | ✅ 可自由管理 | ### 存储优化建议 若需清理系统占用空间: 1. **诊断日志**:定期删除`/data/aee_exp`内过期日志(需root) ```bash adb shell "su -c 'rm -rf /data/aee_exp/*'" ``` 2. **Root组件**:避免手动删除`/data/adb`,应通过Magisk管理器卸载模块 > ⚠️ 注意:操作前务必备份数据,误删系统文件可能导致设备异常[^3]。 --- ### 相关问题 1. **如何安全清理Android系统日志文件而不影响稳定性?** 2. **Magisk模块存储在`/data/adb`的原理是什么?重装系统是否会保留?** 3. **除了`aee_exp`,还有哪些系统日志路径可能占用存储空间?**(参考引用[3]的ANR日志[^3])
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值