intent 显式意图和隐式意图
2012-07-16 22:53
603 查看
Android中鼓励在程序的设计中尽量减少组件的耦合,因此Android中提供了一系列减少耦合的做法,表层我们熟悉的比如xml的布局文件和Activity分离,除此之外,还有一个重要的内容就是intent。它就好比是各个组件中互相通讯的纽带,在四大组件中除了内容提供之外,其他的三大组件都可以通过intent来通讯。除此之外,intent还有启动其他组件的作用。比如启动Activity,服务,绑定服务,通过intent还可以在广播之间传递数据。
对于intent主要的分类主要包括隐式意图和显式意图。显式意图通常主要是启动本应用中的Activity之间的数据,而隐式意图则常见于启动系统中的某些特定的动作,比如打电话,或者是跨应用的Activity启动。
一般:
显式意图:调用Intent.setComponent()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。
隐式意图:没有明确指定组件名的Intent为隐式意图。 Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。
对于intent主要的分类主要包括隐式意图和显式意图。显式意图通常主要是启动本应用中的Activity之间的数据,而隐式意图则常见于启动系统中的某些特定的动作,比如打电话,或者是跨应用的Activity启动。
一般:
显式意图:调用Intent.setComponent()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。
隐式意图:没有明确指定组件名的Intent为隐式意图。 Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。
public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button = (Button) this.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setAction("com.hoo.kay"); //设置数据URI与数据类型匹配 //intent.setData(data); //intent.setType(type);注意这个方法会清除setData的内容,所以如果既要设置类型与数据,那么使用setDataAndType intent.setDataAndType(Uri.parse("hoo://www.hoo.com/person"), "image/gif"); startActivity(intent); } }); } }
<application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".OtherActivity" android:label="@string/app_name"> <intent-filter> <action android:name="com.hoo.kay" /> <action android:name="com.hoo.kesen" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="com.hoo.category.li" /> <data android:scheme="hoo" android:host="www.hoo.com" android:path="/person"/> <data android:mimeType="image/gif"/> </intent-filter> </activity> </application>
相关文章推荐
- Android实例demo19之Intent显式意图隐式意图、隐式意图打开多个网页
- Intent(显式意图,隐式意图)
- Android显式意图、隐式意图、意图过滤器(intent-filter)、意图间传值
- Android开发:显式/隐式Intent意图跳转Activity总结
- (转)Android开发:显式/隐式Intent意图跳转Activity总结
- Android中intent的作用,显式意图和隐式意图
- intent 显式意图以及隐式意图,在Activity、Service和Broadcastreceiver应用
- Intent的应用(一):隐式意图和显式意图
- Android开发:显式/隐式Intent意图跳转Activity总结
- intent 显式意图和隐式意图之Activity的激活方式
- Activity中Intent的含义以及显式意图与隐式意图区别
- Android显式意图、隐式意图、意图过滤器(intent-filter)、意图间传值
- 【转】Android理解:显式和隐式Intent---- try catch
- 显式意图和隐式意图的区别小结
- android学习之Intent隐式意图
- Android深入探究笔记之三 -- Intent (隐式意图和显示意图)
- 关于Android6.0以上调用intent隐式意图拨打电话问题
- 显式intent和隐式intent区别
- 隐式意图和intentFilter匹配
- Intent与IntentFilter——属性介绍与显式与隐式Intent