Android学习之Intent显式,隐式

                                 Android学习之Intent显式,隐式

    intent在一个Android程序的开发中起着非常重要的作用,它就像一个媒介,完成组件之间的相互调用,以及数据信息的传递,对于Android开发人员来说非常重要,本文是我学习的一些心得,包括intent的显式、隐式,方便大家学习与分享,欢迎转载,请注明出处。


显式Intent

        显式Intent是通过组件名称来指定目标组件,通常用于应用程序的内部消息,例如Activity启动子Service或其他Activity。

          显式Intent完成组件之间的调度一般有三种方式,我们以Activity组件为例进行说明

          我们设定我们要从MainActivity跳转到OtherScreenActivity

          一、利用构造方法完成

         

           为了方便大家理解,下面给出了这个构造方法的源码,以供参考

          

           二、利用SetComponent(ComponentName component)方法

           

           三、setClass/setClassName方法

        

          开发小技巧:

          对于显式的操作,我们要多多借用logcat的帮助,比如:我们希望点击按钮,跳转到系统自带的应用程序比如说图库,我们该怎么获得图库的组件名称呢?

          方法很简单:

          1、首先我们在模拟器/手机中打开图库所在的应用界面如图

          Android学习之Intent显式,隐式_第1张图片

           2、清空logcat中的日志信息

          Android学习之Intent显式,隐式_第2张图片

        3、点击图库,在LogCat中All messages中图库的启动信息.

         Android学习之Intent显式,隐式_第3张图片

      上图红框中即为所需信息,代码如下

      Android学习之Intent显式,隐式_第4张图片


  隐式Intent

         隐式不明确指定启动哪个Activity,而是设置Action、Data、Category,让系统来筛选出合适的Activity。筛选是根据所有的(Intent过滤器)来筛选。如果一个组件没有任何Intent过滤器,它仅能接收显式的Intents,而声明了Intent过滤器的组件可以接收显式和隐式的Intents

         下面来介绍一下Intent过滤器

          Intent过滤器

         intent过滤器中可以配置的主要参数有:

          1、action  ---  动作      //想要做什么

          2、data    ---  数据       //用于设置Intent上的数据的URI和数据的MIME类型

          3、category  ---  类型    //用来作用被执行动作的附加信息,也就是动作执行的前提

          开发人员通过在AndroidManifest.xml中application下的activity内配置Intent过滤器,值得一提的是:一个过滤器中可以存在很多action,data,category,只要有一组匹配该activity就可能会被启动


  提示:关于action,category,data系统给出了很多值供开发者使用,大家可以查看

                     http://blog.csdn.NET/scarecrow_fly/article/details/77057882  

       Android学习之Intent显式,隐式_第5张图片

          让我们通过Android系统上层原装应用源码来体会配置Intent过滤器的方法

          下面是短信应用程序的配置源码:

           Android学习之Intent显式,隐式_第6张图片


         每个参数的配置都是独立的,互不影响,可以配置action也可以不配置,category,data也是如此

        例如发送短信的配置源码:

        

       还有下面这个:

       Android学习之Intent显式,隐式_第7张图片

  

   那么  ,配置完了我们如何在代码中进行操作然后打开那些activity呢?

    举个例子:

    从MainActivity跳转到OtherScreenActivity

    这里我们的action和data采用的是自定义

    下面是我们的代码实图:

     activity_main.xml中第三个Button

     Android学习之Intent显式,隐式_第8张图片

     第一个界面的示意图:

     Android学习之Intent显式,隐式_第9张图片

    AndroidManifest.xml配置

    Android学习之Intent显式,隐式_第10张图片

    MainActivity中click3,请大家对比它与上图中配置的action,category,data

    Android学习之Intent显式,隐式_第11张图片

   因此当我们点击第三个Button时就会跳转到第二个界面

       Android学习之Intent显式,隐式_第12张图片


       特别提醒:

                      当Intent过滤器不设置action时,默认所有的动作发生时都会去该activity中进行匹配

                      data也是如此,不设置的默认为适合的

                      但是,当category没有设置时,默认为android.intent.category.DEFAULT,需要去设置相应的

                      addCategory("android.intent.category.DEFAULT");


  

      友情提示:我们这里只是探究Intent显式和隐式的初级应用,更多高级应用欢迎留言!


      作者:scarecrow_fly, 欢迎转载,请注明出处:  http://blog.csdn.NET/scarecrow_fly/article/details/77046470  

你可能感兴趣的:(Android)