略谈Android之Intent

 前言:大家都知道Android程序的实现一般都由四大组件构成:

  1. Activity :Android程序实现功能的主体,提供了和客户交互的界面,也提供了和后台交互的功能。
  2. Service :是一个没有界面的activity,主要用于后台运行的程序。
  3. Broadcast :是当前程序和系统之间通信的工具。
  4. ContentProvider :android程序,管理资源的一种工具。  

 上面这4个组件都需要在manifest里面注册才能够使用,manifest就相当于android程序的大管家。当然光有组件还不够,要想实现组件与组件之间数据(或叫资源)的传递,离不开一个关键“人物”,那就是Intent类。至于什么是Intent呢?下面我就简单的跟大家介绍一下。

  一、什么是Intent?

      Intent这个单词在英文里的意思是“目的,意图”。放在计算机里是什么意思呢?简单来说就是,Android系统建立了一种机制来协助应用程序之间数据(或资源)的传递和通信。那么怎么传递呢?不用担心,Android为此创建了一个类,那就是Intent。你可以把它看成一个桥梁或纽带,它以应用程序之间和上述4大组件之间的数据交互为使命。所以它的意图很明显了,就是数据(资源)的传递。

      Intent在程序当中又是一种运行时绑定机制,也就是说它可以在程序运行的时候连接任意两个不同组件。通过Intent,你可以向Android系统进行请求,Android系统会根据你的请求内容选择相应的组件进行响应。

      还有一个原因,之所以要用Intent来建立连接,就是为了降低程序之间的耦合度。(耦合就是指两个应用程序之间的依赖关系)

  二、创建Intent的三种方式:

      1. Intent intent = new Intent(起始组件对象,目标组件类.class)

      2. Intent intent = new Intent()

          Intent.setClass(起始组件对象,目标组件对象.class)

      3. 获取上一个Activity传递过来的intent对象(Intent = getIntent())

  三、Intent类中包括的一些成员变量(或者属性)

      1.mComponent (目的组件):它是ComponentName的类型,是制订组件间跳转的源组件和目标组件的包名,用于显示意图。它明确指定了Intent目标组件的类名称。这个组件包括包名称和类名称,而且必须要声明在manifest文件中。

      2.mAction(动作):它表示操作的动作,是一个字符串常量。它是一个默认的字符串,是提前预定义好的,就是让所在当前这个activity为项目的入口,并且需要在Manifest文件中的intent-filter标签中设置。

      3.mCategory(类别) : 被启动组件的类别。一个Intent中可以包含多个category描述的信息。要注意,在manifest文件中要同时注册action和category才行,它们一般一起使用,在代码当中,如果没有指定category的话,就必须使用默认的Category。

      4.mData(数据): 该参数是Uri类型存放操作的数据,就是比如:访问的网址,拨打电话等,作用就是向Action提供操作的数据。所谓Uri就是统一资源标识符(包括:http://;主机名;资源索引值;),android框架系统定义了Uri类来处理Intent对象要操作的数据。

      5.mType(数据类型): 显示指定数据类型(MIME)。一般Intent的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显示指定类型而不再进行推导。一般前面是大类型后面是小类型。

       Type属性在Xml文件中只能够命名为mimeType:(下图为例)

        

 1 <intent-filter>
 2                 <action android:name="com.jaoco.SECOND_ACTIVITY" />
 3                 <category android:name="android.intent.category.DEFAULT" />
 4                 <data
 5                     android:scheme="http"
 6                     android:host="www.jaovo.com"
 7                     android:path="/android"
 8                     android:port="8090"
 9                     android:mimeType="image/png"
10                     />
11             </intent-filter>

       设置Type属性值的方法:public void setType(String type)

       设置data和type属性值的方法:public void setDataAndType(Uri uri,String type)如果要同时设置Data和Type的值,只能用这个方法,因为setType()和setData()都会默认将对方设置为null。

      6.mExtras(扩展信息):Intent类中携带的所有的数据都包装在这个类中。

      7.mFlags(标志位):它是一个期望意图运行的模式。

    

      

  

时间: 2024-10-23 15:44:19

略谈Android之Intent的相关文章

浅谈Android多屏幕的事

浅谈Android多屏幕的事 一部手机可以同时看片.聊天,还可以腾出一支手来撸!这么吊的功能(非N版本,非第三方也能实现,你不知道吧)摆在你面前,你不享用?不关注它是怎样实现的?你来,我就满足你的欲望! 一部手机可以同时看片.聊天,还可以腾出一支手来撸==!就像这样: 是时候告别来回切换应用屏幕的酸爽了,还可以在分屏模式下两Activity间直接拖放数据! 好高大上的样子!这是怎么实现的?别急,我们一一道来: kitkat(4.4)版本对多任务分屏的实现 由于相关的代码和功能被封装及隐藏起来,所

浅谈 Android Service

 浅谈Android Service的基本用法: 关于Service最基本的用法自然是启动和停止操作. 启动Service有两种方式: 1.通过startService(Intent intent)方式启动,启动时会自动执行onCreate(),onStartCommand()方法. 2.通过bindService(Intent intent,ServiceConnection connection,int flag) 第一个参数是一个Intent对象,第二个参数是连接Service的实例,

浅谈Android四大组建之一Service---Service与Activity的绑定

从上一篇文章我们学会了如何创建Service,我们通过监听一个按钮,然后再按钮里面通过意图来启动Service.但是我们有没有发现,启动服务以后,Activity和Service之间的联系好像就断开了.两个组建么有太多的关联.那么,这一篇文章我们来介绍,服务和活动之间的绑定.BYW,服务可以和任何一个活动绑定,而且绑定后都可以获取到相同的Binder实例. 关于服务的一点小知识: 一个服务,如果我们调用了startService(),然后再去调用stopService(),那么onDestroy

android之intent显式,显式学习

intent,意图 当从一个Activity到另一个Activity时调用,这里重点学习显式,隐式的使用 使用语句上的区别: 隐式意图:                 显式意图: setAction                                            跳转到其他应用:setClassName setData 跳转到自己应用:setClass addCategory(当为DEFAULT时可无) 一.无参时的显式.隐式举例 显式-到自己应用(最简单情况): /*

Android中Intent笔记

Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件.通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来完成请求.比如,有一个Activity希望打开网页浏览器查看某一网页的内容,那么这个Activity只需要发出WEB_SEARCH_ACTION给Android,Android就会根据Intent的请求内容,查询各组件注册时声明的IntentFilter,找到网页浏览器的Ac

浅谈Android五大布局

Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Android的五大布局分别是LinearLayout(线性布局).FrameLayout(单帧布局).RelativeLayout(相对布局).AbsoluteLayout(绝对布局)和TableLayout(表格布局). LinearLayout: LinearLayout按照垂直或者水平的顺序依次排列子元素,每一个子元素都位于前一个元素之后

略谈SQL中的存储过程

对于数据库,一直在增,删,查,改这四个操作中转悠徘徊,没去想太多数据其他的东西.最近发现数据库中等待发现的,等待学习的,等待挖掘的东西太多了.我一直没去搞清楚游标,存储过程以及触发器等等这些知识概念,从没有想过数据库的优化工作和代码简化工作. 之前写了一篇关于数据库的触发器,这一篇主要谈一下数据库的存储过程. 首先SQL Server支持5种类型的存储过程: 系统存储过程,本地存储过程,临时存储过程,远程存储过程,扩展存储过程 1.系统存储过程:由系统提供的存储过程,可以作为命令执行各种操作.系

Android Activity Intent

首先定义一个LifeCycleActivity的类,继承Activity,重写onCreat() onStart()  onResume()  onPause()  onStop()  onDestroy() 1 import android.app.Activity; 2 import android.os.Bundle; 3 import android.util.Log; 4 5 public class LifeCycleActivity extends Activity{ 6 7 @O

继承与混合,略谈系统的构建方式

http://blog.csdn.net/aimingoo/article/details/6062997 这两天在读kissy的源代码,从一开始我就对它的mix()函数充满了敌意.因为无论从哪个角度来看,那都是一个极其低效的实现.不过深入了解这个框架之后,我对kissy中的新的系统构建的模型产生了兴趣,而这种系统构建的方式,也正是由mix()所带来的. 一.对象系统 我们先了解一下对象系统.在<JavaScript语言精髓与编程实践>中谈到过,面向对象系统有三种对象的继承方式,即原型.类和元