社区编辑申请
注册/登录
深度剖析Android应用领域说明
移动开发 Android
Android会同一个核心应用程序包一起发布,Android应用主要是由四种组件组成的,这四种组件可参考“Android应用的构成 ”。

在每一个Android应用程序都可能会在自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例,Android是一个有数百兆大小的较大系统,各部分之间是有机联系的,仅供大家学习思考。

Intent负责对应用中一次操作的动作、动作涉及数据 、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。

例如,在一个联系人 维护的应用中,当我们在一个联系人列表屏幕(假设对应的Activity为listActivity)上,点击某个联系人后,希望能够跳出此联系人的详细信息屏幕(假设对应的Activity为detailActivity)

为了实现这个目的,listActivity需要构造一个 Intent,这个Intent用于告诉系统,我们要做“查看”动作,此动作对应的查看对象是“某联系人”,然后调用startActivity (Intent intent),

将构造的Intent传入,系统会根据此Intent中的描述,到ManiFest中找到满足此Intent要求的Activity,系统会调用找到的 Activity,即为detailActivity,最终传入Intent,detailActivity则会根据此Intent中的描述,执行相应的操作。

在Android参考文档中,对Intent的定义是执行某操作的一个抽象描述(确实很抽象)。我们先来看看这里的抽象描述,到底描述了什么。首先, 是要执行的动作(action)的一个简要描述,如VIEW_ACTION(查看)、EDIT_ACTION(修改)等,Android为我们定义了一套标准动作:

  1. MAIN_ACTION  
  2. VIEW_ACTION  
  3. EDIT_ACTION  
  4. PICK_ACTION  
  5. GET_CONTENT_ACTION  
  6. DIAL_ACTION  
  7. CALL_ACTION  
  8. SENDTO_ACTION  
  9. ANSWER_ACTION  
  10. INSERT_ACTION  
  11. DELETE_ACTION  
  12. RUN_ACTION  
  13. LOGIN_ACTION  
  14. CLEAR_CREDENTIALS_ACTION  
  15. SYNC_ACTION  
  16. PICK_ACTIVITY_ACTION  
  17. WEB_SEARCH_ACTION  

此外,我们还可以根据应用的需要,定义我们自己的动作,并可定义相应的Android应用来处理我们的自定义动作,其次, 是执行动作要操作的数据(data)。Android中采用指向数据的一个URI来表示,如在联系人应用中,一个指向某联系人的URI可能为:

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  2.        package="com.android.notepad  
  3. "> 
  4.      <application android:icon="@drawable/app_notes" 
  5.              android:label="@string/app_name"> 
  6.  
  7.          <provider class=".NotePadProvider" 
  8.                  android:authorities="com.google.provider.NotePad  
  9. /> 
  10.  
  11.          <activity class=".NotesList" android:label="@string/title_notes_list"> 
  12.              <intent-filter> 
  13.                  <action android:value="android.intent.action.MAIN" /> 
  14.                  <category android:value="android.intent.category.LAUNCHER" /> 
  15.              </intent-filter> 
  16.              <intent-filter> 
  17.                  <action android:value="android.intent.action.VIEW" /> 
  18.                  <action android:value="android.intent.action.EDIT" /> 
  19.                  <action android:value="android.intent.action.PICK" /> 
  20.                  <category android:value="android.intent.category.DEFAULT" /> 
  21.                  <type android:value="vnd.android.cursor.dir/vnd.google.note  
  22. /> 

Android应用,被执行动作的附加信息。例如 LAUNCHER_CATEGORY 表示Intent 的接受者应该在Launcher中作为***应用出现;而ALTERNATIVE_CATEGORY表示当前的Intent是一系列的可选动作中的一个,这些动作可以在同一块数据上执行。

type(数据类型),显式指定Intent的数据类型(MIME)。一般Intent的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。

component(组件),指定Intent的的目标组件的类名称。通常 Android会根据Intent 中包含的其它属性的信息,比如action、data/type、category进行查找。最终找到一个与之匹配的目标组件。但是,如果 component这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这个属性以后,Intent的其它所有属性都是可选的。

【编辑推荐】

  1. Android应用程序组建原理深入剖析
  2. Android SMS短信服务相关概念简述
  3. PythonAndroid数据库相关代码解读
  4. PythonAndroid安装卸载程序具体操作方法解析
  5. Android应用程序的四个关键点
责任编辑:chenqingxiang 来源: NET130
相关推荐

2010-01-25 17:43:13

Android资源

2014-08-07 10:19:43

2010-03-02 11:12:33

2010-02-07 15:29:41

Android问题

2010-01-27 17:45:15

Android应用技巧

2013-04-07 14:09:55

2009-03-11 13:18:57

2010-07-12 17:10:23

2010-03-05 09:19:54

2011-05-31 08:54:37

Android开发 架构

2010-01-25 10:57:57

Android系统应用

2010-03-04 16:03:43

2010-03-03 16:20:40

2010-01-28 13:50:03

2013-05-23 11:22:04

Android开发者UI设计Android设计

2010-01-26 13:28:11

Android开发要点

2012-08-30 09:41:23

移动应用开发

2021-09-15 07:31:33

2013-07-24 09:32:13

Android项目

2017-12-08 14:26:19

同话题下的热门内容

Android中实现系统声音录制-RK3399开发板源码修改Android 9 用户比 Android 12 多,系统碎片化问题依旧严重

编辑推荐

支付宝即将下线收款业务:2018年1月1日起正式执行,网友炸锅了!史上最详细的Toolbar开发讲解,此篇必读!你终于可以在Android的Gboard上用中文打字了查看文档的8款优秀Android PDF阅读软件Android Pie的9个隐藏功能:你可能错过的若干优秀技巧
我收藏的内容
点赞
收藏

51CTO技术栈公众号