Intent与Activity

来源:互联网 发布:淘宝快递运费价格表 编辑:程序博客网 时间:2024/05/17 22:23
 
•何谓Activity:最简单的就是你可以把Activity看成一个User Interface Program,原则上它会提供使用者一个交互式的接口功能,那一个activity只有一个UI吗?非也,举例来说:一个email程序,就可能 包含三个activity
–邮件列表的activity
–显示邮件内容的activity
–写新邮件或回复邮件的activity
•所 有的Activity在系统里由Activity堆栈所管理,当一个新的Activity被执行后,它将会被放置到堆栈的最顶端,并且变 成"running activity", 而先前的Activity原则上还是会存在于堆栈中,但它此时不会是在前景的情况,除非刚刚那个新的Activity离开。
 
•Android使用了一个很特别的类别叫Intent, 用来从一个画面跳到另一个画面。
•Intent是用来描述一个程序想要作些什么事情。
•在Intent的数据结构里有两个很重要的部份,一个是动作 (action)及对数据产生反应(data to act upon)。action主要的内容有MAIN(程序的进入点),VIEW,PICK,EDIT等等。data则是用URI的形示来表示。比如:想要查看 一个人的联络数据时,你需要建立一个Intent,它包含了VIEW的动作(action)及指向该人数据的URI描述句。
 
•当Intent要求做某些事情时,IntentFilter被用来描述这个activity能够做些什么事情。比如 一个activity要能够显示个人联络数据,你就必需要在IntentFilter说明你要如何处理个人联络数据并用ACTION_VIEW呈现出来。
• IntentFilter都会在AndroidManifest.xml清单里面声明。
 
•当你想要写一个程序来对外部的事件做些处理时,可以使用Broadcast Intent Receiver。比如:当电话响时,有短信时。Broadcast Intent Receiver它并不能拿来显示UI画面,它必需利用NotificationManager来通知使用者他们感兴趣的事件发生了。
•Broadcast Intent Receiver同样的可以在AndroidManifest.xml中声明,但你也可以用写 Context.registerReceiver()程序的方式来注册你自己的Broadcast Intent Receiver。你自己的程序并不会因为BroadcastReceivers被呼叫而被它执行起来。而是当BroadcastReceiver被触发 时系统会依需求来执行相对应的程序。
程序可以利用Context.sendBroadcast()来发出他们自己的intent broadcast给其它的程序。
 
•画面的切来切去则是由resolving intent来实现的。当你想产生新的画面时,现行的activity就使用startActivity(myIntent)
•系统会根据所有已安装的程序所定义的intent filter来看那个程序是最适合myIntent。
•当startActivity被呼叫时,resolving Intents的处理过程是伴随而来的。resolving intent提供我们两个好处:
–让Activities可以很容易的利用Intent的方式去使用别的程序的功能。
–Activities可以很容易的在任何情况下由新Activity所取代。
 
 
原创粉丝点击