关闭

Activity的隐式调用和显示调用

标签: android
2192人阅读 评论(0) 收藏 举报
分类:

在实际开发中,我们知道Activity之间及Android应用程序之间的通信都少不了Intent的使用,而Intent主要负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,然后Android据此Intent的描述来找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。

Intent分为两种:

  • 显式Intent(Explicit intent):通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的。

  • 隐式Intent(Implicit intent):通过Intent Filter来实现的,它一般用在没有明确指出目标组件名称的前提下,一般是用于在不同应用程序之间。

1、显示Intent

比如点击一个按钮,明确的启动一个指定的Activity组件–设置模块:

Intent intent=new Intent(MainActivity.this,SettingActivity.class);
intent.putExtra(EXTRA,contentEditText.getText().toString());
startActivity(intent);

而Manifest文件描述为:

<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=".SettingActivity" 
                  android:label="@string/app_name"> 
        </activity> 
    </application> 

2、隐士Intent

隐式不明确指定启动哪个Activity,而是在Intent Filter中设置Action、Data、Category,让系统来筛选出合适的Activity。
如:

// 实例化Intent  
Intent intent = new Intent();  
//设置Intent的Action属性  
intent.setAction("android.intent.action.SEND");  
// 启动Activity  
startActivity(intent);  

而Manifest文件添加Intent Filter配置:

<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=".SettingActivity" 
                  android:label="@string/app_name"> 
        </activity> 
        <activity android:name=".SecondActivity" >                 
        <intent-filter>   
            <action  android:name = "android.intent.action.SEND"  />   
            <category android:name = "android.intent.category.DEFAULT"  />   
         </intent-filter>       
        </activity>          
    </application> 

action可以增加多个,那么如果有多个Activity都被匹配到了,则系统会弹出一个列出所有已被匹配到的应用程序的列表选项。

对于显示Intent,Android不需要去做解析,因为目标组件很明确。而隐式Intent需要通过解析,将Intent映射给可以处理该Intent的Activity,Service等。Intent的解析机制主要是通过查找已经注册在AndroidManifest.xml中的所有Intent Filter以及其中定义的action,最终找到匹配的Intent。

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Activity详解 Intent显式跳转和隐式跳转, 及多个Activity之间传值 总结

Activity详解 Intent显式跳转和隐式跳转, 及多个Activity之间传值 总结   Activity 生命周期 显式 Intent 调用 1 //创建一个显式的 Intent 对象(方法一:在构造函数中...
  • a2241076850
  • a2241076850
  • 2017-01-03 18:20
  • 597

android intent 隐式调用

(转自:http://my.oschina.net/aowu/blog/26318) 理解Intent的关键之一是理解清楚Intent的两种基本用法:一种是显式的Intent,即在构造Intent对象时就指定接收者,这种方式与普通的函数调用类似;另一种是隐式的Intent,即Intent的发送...
  • jiasudu1
  • jiasudu1
  • 2012-03-09 11:23
  • 4120

Intent隐式调用:启动其它应用程序

Intent的两种基本用法: 显式的Intent,即在构造Intent对象时就指定接收者,这种方式与普通的函数调用类似; 隐式的Intent,即Intent的发送者在构造Intent对象时,并不知道也不关心接收者是谁,有利于降低发送者和接收者之间的耦合。
  • zhangping2015
  • zhangping2015
  • 2017-05-18 23:57
  • 247

intent隐式调用大全(调用系统的的组件)

Intent隐式跳转 Action 1 //创建一个隐式的 Intent 对象:Action 动作 2 /** 3 * 这里指定的是 AndroidManifest.xml 文件中配置的 4 * 标签中的 5 * 所在的 Activity,注意这...
  • Double2hao
  • Double2hao
  • 2015-10-07 09:34
  • 885

Android隐式启动:Intent的用法

什么是隐式Intent? Intent是比较重要的组件,用来启动Activity或者Service、广播和在Android组件之间传递数据,四大组件都与Intent有关联,通过Intent来启动Activity或者Service通常有两种方法,一种是显示启动,另一种是隐式启动。 显示启动就是在明...
  • Deaht_Huimie
  • Deaht_Huimie
  • 2016-10-31 17:00
  • 517

Android静态安全检测 -> Intent隐式调用

Intent隐式调用 - android.content.Intent 1. API 继承关系 java.lang.Object android.content.Intent 主要方法 构造方法 Intent() Intent(String action)...
  • u013107656
  • u013107656
  • 2016-07-18 21:50
  • 1423

android学习笔记——Intent的解析(Intent的隐式调用)

对于显式的Intent,因为已经明确了目标组件,因此不需要系统去解析。由于隐式Intent没有明确的目标组件,因此,当隐式Intent被抛出后,系统在众多组件中根据Intent过滤器中的action、datatype、Uri来寻找预期匹配的处理方法。如果存在多个结果,用户可以根据需要选择合适的处理方...
  • a243845305
  • a243845305
  • 2016-03-20 00:05
  • 132

关于intent的隐式调用

简单说明一下隐式Intent调用Activity的IntentFilter匹配规则  1.action,是一个intent的必备条件,有且必须匹配,只要有一个action匹配就可以 2.category,通常情况下,自定义一个Activity如果想要被隐式调用调起的话,起码要声明一个c...
  • yueye12
  • yueye12
  • 2017-03-31 11:46
  • 145

在一个Activity中调用另外一个Activity的变量或方法

想在一个Activity里面调用另外一个Activity的方法主要有接口回调和静态方法。但是除了静态方法之外,并不推荐接口回调方法。 其中静态方法实现参考如下表述:     需求:在A activity中调用 B activity的methodB()。 ...
  • phenixyf
  • phenixyf
  • 2016-07-27 22:58
  • 6498

安卓:如何在其他类里调用activity的方法

今天遇到一个问题 acticity里面有一个非静态方法,我要在一个广播接收器里面调用此方法。 由于那个非静态方法里面被写死了 无法修改为静态方法。所以有一个简单的方法能够在其他类里面调用非静态方法代码public class MyActivity extends Activity {     p...
  • chenxin_oo
  • chenxin_oo
  • 2016-05-12 14:16
  • 2752
    个人资料
    • 访问:61662次
    • 积分:967
    • 等级:
    • 排名:千里之外
    • 原创:30篇
    • 转载:1篇
    • 译文:2篇
    • 评论:6条
    博客专栏
    最新评论