WEB开发网
开发学院手机开发Android 开发 Intent Android 详解 阅读

Intent Android 详解

 2010-09-21 01:45:00 来源:WEB开发网   
核心提示:事实上附加信息可以使用putExtras()和getExtras()作为Bundle来读和写. Flags 各种标志. 很多标志指示android系统如何启动一个activity(例如该activity属于哪个任务)和启动后如何处理它(例如, 它是否属于最近activity列表中). android系统和应用程序使用i
事实上附加信息可以使用putExtras()和getExtras()作为Bundle来读和写. Flags 各种标志. 很多标志指示android系统如何启动一个activity(例如该activity属于哪个任务)和启动后如何处理它(例如, 它是否属于最近activity列表中). android系统和应用程序使用intent对象来送出系统广播和激活系统定义的组件. Intent Resolution Intent解析

intent有两种: 显式intent使用名字来指定目标组件. 由于组件名称一般不会被其它开发者所熟知, 这种intent一般用于应用程序内部消息-- 例如一个activity启动一个附属的service或者另一个activity. 隐式intent不指定目标的名称. 一般用于启动其它应用程序的组件. Android将显式intent发送给指定的类. intent对象中名字唯一决定接受intent的对象.

对于隐式intent, android系统必须找到最合适的组件来处理它. 它比较intent的内容和intent filter. intent filter是组件的一个相关结构, 表示其接受intent的能力. android系统根据intent filter打开可以接受intent的组件. 如果一个组件没有intent filter, 那么它只能接受显式intent. 如果有, 则能同时接受二者. 当一个intent和intent filter比较时, 只考虑三个属性: action, data, category. extra和flag在intent解析中没有用. Intent filters activity, service和broadcast receiver可以有多个intent filter来告知系统它们能接受什么样的隐式intent. intent filter的名字很形象: 它过滤掉不想接受的intent, 留下想接受的intent.

显式intent无视intent filter. 一个组件对能做的每件事有单独的filter. 例如, 记事本程序的NoteEditor activity有两个filter -- 一个启动并显示一个特定的记录给用户查看或编辑, 另一个启动一个空的记录给用户编辑. Filters and security Filter和安全 一个intent filter不一定安全可靠. 一个应用程序可以让它的某个组件去接受隐式intent, 但是它没法防止这个组件接受显示intent. 其它的程序总是可以使用自定义的数据加上显式的程序名称来调用该组件. 一个intent filter是IntentFilter类的实例, 但是它一般不出现在代码中,而是出现在android Manifest文件中, 以的形式. (有一个例外是broadcast receiver的intent filter是使用 Context.registerReceiver()来动态设定的, 其intent filter也是在代码中创建的.) 一个filter有action, data, category等字段. 一个隐式intent为了能被某个intent filter接受, 必须通过3个测试. 一个intent为了被某个组件接受, 则必须通过它所有的intent

上一页  1 2 3 4 5 6 7 8  下一页

Tags:Intent Android 详解

编辑录入:coldstar [复制链接] [打 印]
赞助商链接