Android 基础Intent与Intent Filter

 

Intent 设计的目标:

  • 启动四大组件
  • 高层次解耦

Intent用来干嘛?

启动Activity, Service, BroadcastReceiver

传递数据

 

为什么要用Intent?

封装“启动意图”

提供统一编程模型

避免耦合

 

1.1 使用Intent可以启动的系统组件

 

 

启动方法

 

Activity

startActivity(Intent intent)

 
 

startActivityForResult(Intent intent, int responseCode)

 

Service

ComponentName startService(Intent service)

 
 

boolean bindService(Intent service, ServiceConnection conn, int flag)

 

BroadcastReceiver

sendBroadcast(Intent intent)

 
 

sendBroadcast(Intent intent, String receiverPermission)

 
 

sendOrderBroadcast(Inent intent)

 
 

sendStickyBroadcast(Intent intent)

Broadcast发送完了,消息还好再等待一会

 

sendStickyOrderBroadcast(Intent intent….)

 

 

1.2 Intent的属性

1.2.1 Component 属性

Component属性其实就是一个ComponentName对象,用于指明要启动的组件类的包名,和类

ComponentName comp = new ComponetName(ThisActivity.this, TargetActivity.class);
Intent intent = new Intent();
intent.setComponent(comp);
startActivity(intent);

其实我们可以用更简单的方法

Intent intent=new Intent(ThisActivity.this, TargetActivity.class);
.....

1.2.2 Action、Category

代表要完成的一个抽象动作

显式意图,隐式意图

<intent-filter>节点下可以包含

0~N个<action/>元素

0~N个<category/>元素

0~1个<data />元素

系统中有名的ACTION:

ACTION_MAIN

ACTION_VIEW

ACTION_CALL直接给指定用户打电话

1.2.3  Data, Type与Intent Filter

指定了Data, 就无需再支持Type属性

Data 属性是一个Uri 的对象实例

content://com.android.contacts/contacts/1

 

1.2.4 Extra

长用于多个Action之间的数据交换, 是一个Bundle对象

posted @ 2012-09-04 00:03  Stanley.Luo  阅读(636)  评论(0编辑  收藏  举报