看到一篇好文章,待加工 http://hi.baidu.com/jieme1989/item/6e5f41d3f65be848ddf9beb9

第三篇 http://blog.csdn.net/luoshengyang/article/details/6714543

以前写ios程序时,想调用别的第三方程序,一般都是用到 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:appString]];  调用后,系统就停在了启动后的第三方程序中,想回到以前的程序只能手动启动以前的程序。

后来发现Android中不是这样的,程序可以把第三方的程序的一个模块通过intent单独调用,按back钮就能回到之前的程序,用起来就好像一个程序。

如果想用好这个功能,就需要了解Intent,Task,Activity中重要参数的作用。

以上3个帖子就对这方面的知识进行了解释。


Intent 到底是什么呢,其实,最好的了解方式就是官方文档!请参阅google 的Intents and Intent Filters 说明,地址http://developer.android.com/guide/components/intents-filters.html

Intent的使用,使同一个程序中的各个Activity不相互依赖。正是因为它们之间没有紧耦合,我们才能顺利的把一个程序的activity“嵌入”到另一个程序中去。以前在ios写程序时,都先吧controller实例化,再把对象附上各式各样的自定义属性值,再present出来。Android中的Activity完全不走这个路线,启动一个Activity不能通过先实例话对象,而是通过使用Intent,这样,强制使你的代码松耦合。就感觉上说,对于一个小程序,ios的做法更加方便易懂,写起来很容易。但是就代码的规范度和重用性来说,android的做法更横一筹。

下面根据官方文档简单总结一下:

创建一个Intent有2中基本方法,一个是创建一个explicit Intent,你需要传入具体Component name(android中把activity,server,broadcast等叫做component),比如new Intent(context,xxxx.class));另一种是创建一个implicit Intent,利用intent的action值,比如new Intent("com.xx.zzzzzzzzz");

Intent的主要属性有,

Component name:用于指定启动对应的component,参见上文

Action:用于启动对应的component,参见上文

Data: 用于指定component可以处理的数据url和mimeType,和 intent-filter 中 data 标签配合使用

Category:用于指定component所属类别,和intent-filter 中 category 标签配合使用

Extras:用于向intent中添加信息

Flags:用于指定一些系统设置,比如FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_SINGLE_TOP 等等。


提到Android就要一定要看看Task这个有意思的概念,这个Task与线程无关,在android是个stack,请仔细阅读官方 说明 Tasks and Back Stack ,地址 http://developer.android.com/guide/components/tasks-and-back-stack.html

以下摘抄一句Task技能带来的,ios不具备的机能说明  Even though the activities may be from different applications, Android maintains this seamless user experience by keeping both activities in the same task

这个stack的概念,让我想起了ios中的UINavigationController,这个可以容纳其他controller的“容器”,也应该有一个stack。不知道ios中除了nav Controller 外哪里还使用了stack,presentViewController 这个最基本的方法会吗?不断地present会像stack中不断地添加controller吗?present 一个controller后, 上一个controller的view会怎么样?被移除了还是放在了后面?Android 开始一个新Activity的话,上个Activity的view肯定是被移除了的。等回去研究下,再继续总结。

最新文章

  1. PPT图片双屏抽奖系统现场主要操作流程介绍
  2. avalon学习笔记
  3. js对象、数组转换字符串
  4. ORACLE创建表之前判断表是否存在与SQL Server 对比使用
  5. HTML5 实现橡皮擦的擦除效果
  6. poj 2239 Selecting Courses(二分匹配简单模板)
  7. TCP/IP的三次握手和四次分手以及超时机制
  8. 利用if else 求已发奖金总数
  9. sc delete 服务名
  10. 【redis】windows
  11. 忽然想到:把Mu的源代码一网打尽
  12. Flipping Game(枚举)
  13. ubuntu显卡驱动安装及设置
  14. mysql视图定义、原理、创建、使用
  15. iPhone 系统刷机
  16. 使用mybatis-generator工具自动生成mybatis代码
  17. PythonStudy——装饰器 Decorator
  18. Javascript - ExtJs - GridPanel组件
  19. Adams输出宏代码
  20. 使用.gitignore删除Github上的.idea文件

热门文章

  1. 【转】Kafka producer原理 (Scala版同步producer)
  2. 只有文本编辑器才是王道, 什么ide都是evil的浮云, 看看linus linux的内核开发工具vim emacs
  3. Linux启动管理:grub
  4. php 选择排序法
  5. Git命令家底儿及Git数据通信原理详解
  6. php防注入
  7. RelativeLayout布局
  8. hdu.1429.胜利大逃亡(续)(bfs + 0101011110)
  9. 第一节 HTML网页和CSS样式
  10. 63.Hbase 常用命令