Intent(信使)显式与隐式调用
2017-03-17 13:55
232 查看
Intent(信使)显式与隐式调用
程序的3个核心组件——Activity、Service、BroadcastReceiver——是通过Intent传递消息的,本篇简单列举一下Intent在Activity间的显式和隐式的使用方法。显式Intent的使用
显式,顾名思义,就是明显地写出将要跳转的代码文件的名字。标准版
Intent intent = new Intent(); intent.setClass(MainActivity.this,SecondActivity.class); startActivity(intent);
千万别忘了在AndroidManifest文件中注册Activity
<activity android:name=".SecondActivity"> </activity>
两行代码
Intent intent = new Intent(this,SecondActivity.class); startActivity(intent);
丧心病狂型
startActivity(new Intent(this,SecondActivity.class));
这里建议使用标准版,清晰明了,便于后续的二次开发。
隐式Intent的使用
相对于显式Intent,隐式Intent比较复杂。涉及到过滤器的概念:intent过滤器是IntentFilter类的实例。然而,Android系统在启动组件前必须知道组件的能力,intent过滤器是在manifest文件(AndroidManifest.xml)里作为元素建立而不是在java代码里。(有一个特例是:广播接收器的过滤器,它是通过Context.registerReceiver()函数动态的注册;它被作为IntentFilter对象创建。)
一个过滤器有动作域、数据域、intent对象类别域。一个显式的intent测试这三个域。并派送给拥有过滤器的组件,必须通过三个测试。如果有一个测试失败,Android系统都不会分派——至少不是过滤器的基础。然而,如果组件有多个intent过滤器,不分派给一个组件也会分派给另一个组件。
具体的信息可以参考官方文档,这里不加赘述:
Google官方文档-Intent过滤器
下面我们来看看代码实现:
java文件中
Intent intent = new Intent(); intent.setAction("android.intent.action.toSecond"); startActivity(intent);
AndroidManifest文件中
<activity android:name=".SecondActivity"> <intent-filter> <action android:name="android.intent.action.toSecond" /> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
这里需要注意的是,只有和中的内容同时能够匹配上Intent中指定的action和category时,这个活动才能响应该Intent。
完。
相关文章推荐
- 一个简单的Android Intent使用实例,包括显式/隐式2种调用
- 动态链接库的生成(dll)和 动态链接库隐式and显式调用
- Qt中库函数的隐式调用与显式调用
- Intent之学习一(显式与隐式)
- android intent隐式调用之一个应用程序启动另一个应用程序
- 基类和派生类的构造函数,隐式调用与显式调用
- 隐式intent和显式intent
- Android理解:显式和隐式Intent
- 3月24日学习笔记(调用隐式Intent启动浏览器)
- Intent(二)隐式调用intent
- Activity详解 Intent显式跳转和隐式跳转
- 显式intent和隐式intent区别
- 显式Intent与隐式Intent
- android intent隐式调用之一个应用程序启动另一个应用程序
- 显式与隐式Intent及AndroidManifest.xml文件中intent-filter参数说明
- 显式intent和隐式intent
- Android理解:显式和隐式Intent
- android中的显式与隐式Intent
- Android中的显式 Intent和隐式 Intent
- 关于显式调用DLL、隐式调用DLL和查看DLL输出函数