关于Intent ,Task, Activity的理解
看到一篇好文章,待加工 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_TASK,FLAG_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肯定是被移除了的。等回去研究下,再继续总结。
关于Intent ,Task, Activity的理解的更多相关文章
- Intent实现Activity组件之间的通信
今天讲解的是使用Intent实现Activity组件之间的通信. 一. 使用Intent显式启动Activity,Activity1àActivity2 1. ...
- Android - 通过Intent启动Activity
通过Intent启动Activity 本文地址: http://blog.csdn.net/caroline_wendy 为了动态关联Activity界面,使用Intent启动.能够灵活绑定. 在In ...
- 【Android基础】利用Intent在Activity之间传递数据
前言: 上一篇文章给大家聊了Intent的用法,如何用Intent启动Activity和隐式Intent,这一篇文章给大家聊聊如何利用Intent在Activity之间进行沟通. 从一个Activ ...
- Android(java)学习笔记73:Intent启动Activity
1. Intent启动Activity案例 (1)首先是main.xml和other.xml文件如下: main.xml文件: <?xml version="1.0" enc ...
- Intent获取Activity返回值
/* Intent获取Activity返回值* 三步:* 子Activity关闭后的返回值处理函数,requestCode是子Activity返回的请求码,与页面顶端的两个请求码相匹配,resultC ...
- 从0系统学Android-2.3使用 Intent 在 Activity 之间穿梭
2.3 使用 Intent 在 Activity 之间穿梭 在上一节中我们已经学会了如何创建一个 Activity 了.对于一个应用程序来说,肯定不可能只有一个 Activity.下面就来学习多个 A ...
- Android学习笔记三:用Intent串联activity
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7513399.html 一:Intent Intent可以理解为 意图. 我们可以通过创建intent实例来定义 ...
- Android之Intent和Activity
Intent能够说是Android的灵魂,程序跳转和传递数据的时候基本上就是靠Intent了.Intent在Android应用中是相当重要的,理解Intent相应用编程非常有帮助.在Android的官 ...
- 用Intent实现activity的跳转
新建一个FirstAvtivity.java package com.zhuguangwei; import android.app.Activity;import android.content.I ...
随机推荐
- JavaScript 中 的prototype和__proto__
1.prototype是函数的一个属性(每个函数都有一个prototype属性),这个属性是一个指针,指向一个对象.它是显示修改对象的原型的属性. 2.__proto__是一个对象拥有的内置属性(请注 ...
- android自定义控件(1)-点击实现开关按钮切换
自定义控件的步骤.用到的主要方法: 1.首先需要定义一个类,继承自View:对于继承View的类,会需要实现至少一个构造方法:实际上这里一共有三个构造方法: public View (Contex ...
- linux shell 报错 Syntax error: Bad for loop variable
在linux下写了一个简单的shell,循环10次. test.sh #!/bin/bash ## ##循环10次 ## ; i<; i++)); do echo Good Morning ,t ...
- poj3254 Corn Fields (状压DP)
http://poj.org/problem?id=3254 Corn Fields Time Limit: 2000MS Memory Limit: 65536K Total Submissio ...
- log4net--不可多得的开源日志记录组件
log4net--不可多得的开源日志记录组件 1 前奏 一直在用log4net日志工具,却没时间写个日志给大家分享一下这个工具,趁最近比较空些,好好分享一下这个工具. 2 说明 Log4net介绍就不 ...
- 【转】CSS3动画帧数科学计算法
本文来源于:财付通TID 原作者:bboy90 总结都浓缩在这个工具里了,想知道工具的地址或想窥探工具诞生的趣事请往下看 . —————————————————————– 华丽丽的开篇 ...
- css定位之z-index问题分析
新手先去看看 CSS z-index 属性 CSS z-index 属性的使用方法和层级树的概念 ---------------------------------------------- ...
- oracle数据表创建分区与查询
场景: 遇到1亿数据量的数据需要根据用户名做些数据统计分析,想直接做些聚合计算基本没可能,于是打算先根据日期按照年月创建分区,然后对各个分区分别进行统计,最后汇总结果. 有两种方法,分别是手工设置分区 ...
- SEO 百度后台主动推送链接
实践步骤,先用爬虫程序将本网站的所有连接爬取出来,再用python文件处理程序把爬虫来的东东整理成一行一个链接的文本格式.再用postman接口测试工具,使用post方式,将所有的链接post过去,这 ...
- C++Socket编程总结 [转]
使用socket写代码主要是要看自己的需求是什么. 如果通信时,内容很重要就要使TCP方式. 如果用户数太多,可能就要使用UDP方式了. 在TCP模式下,最简单的方式就是这样的,使阻塞方式: 服务端: ...