android之Intent

  次阅读 作者:智能小宝 来源:互联网 2016-01-14 09:29 我要评论(0)

Intent是一个消息对象你可以用来去请求一个来自另外一个app component的action。虽然Intent便于在component之间通信,,到那时有三种基本的用例

1:开启一个activity

a:startActivity

通过传递一个Intent给startActivity()函数,开启一个Activity的新的实例,。Intent中描述新开启的Activity以及带有一些相关的数据

b:startActivityForResult

开启一个新的Activity,当新开启的Activity结束后,返回一定的数据到原始的Activity。

2:开启一个service

service是不带用户界面的在背地里运行的组件,比如说下载文件,播放音乐。

a: startService

开启一个服务来执行一次操作,传递Intent给startService()函数

b:bindService

如果service被设计成服务器-客户端的接口模式,可以从另外一个component绑定一个service。

3:传递一个broadcast

broadcast是一个任何app都可以接受的message。可以通过sendBroadcast(),sendOrderedBroadcast(),sendStickyBroadcast()来给其他app传递broadcast。

Intent的分类

1:显式的Intent

通过指定一个component的全名来指定开启的Intent。

2:隐式的Intent

不指定一个component的名字,只声明它要做的action。

当创建一个隐式的Intent的时候,系统会通过比较manifest中的Intent-filter和Intent的内容,如果Intent的内容和Intent-filter中的相互匹配,系统就会开启那个component来传递Intent,如果有多个Intent-filter匹配的话,系统就会弹出一个对话框让调用者来选择。

Intent负载的信息

Intent上面负载着系统决定启动哪一个component(component的名字,component的category),以及接受的组件需要是用的信息等。

1:Component name

要启动的component的名字,这个是可选的,对于显式的就用名字,隐式的可以通过action,category,data等来判断启动哪一个component。

2:Action

指定要执行的动作

3:data

URI,或者MIME格式的对象。data是由Intent的Action决定的,如果Action是一个ACTION_EDIT,那么data就应当包含编辑文档的URI。

当创建一个Intent的时候,它往往是重要的去指定data的类型。指定data为MIME格式能够辅助系统找到最合适的component来接受Intent,但是MIME有时候可以从URI中推断出来,特别当data是一个content的时候。

setData(),setType(),setDataAndType来设置数据的格式。

4:category

给一个component提供附加信息,一个Intent中可以放置任意数目的category,但是大部分Intent并不需要一个category。

5:extras

就像一些action使用uri,一些action要使用extras来给Intent的action提供附加信息。

6:Flags

这个主要是处理指明系统如何去加载一个activity,例如把新启动的activity加载到哪一个Task中,它加载完毕后怎么处理它。

Intent例子

1:显式调用

// Executed in an Activity, so 'this' is the Context

// The fileUrl is a string URL, such as "http://www.example.com/image.png"

Intent downloadIntent = new Intent(this, DownloadService.class);

downloadIntent.setData(Uri.parse(fileUrl));

startService(downloadIntent);

2:隐式调用

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...