关于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 ...
随机推荐
- Python开发【第十一篇】:JavaScript
JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一.如何编写 1.J ...
- Centos7安装rabbitmq server 3.6.0
###假设所有操作在opt目录下进行 cd /opt mkdir apps cd apps ### 下载 RabbitMQ Server wget http://www.rabbitmq.com/re ...
- 解决windows系统80端口被占用问题(转)
在windows下部署web应用(80端口),启动时提示bind 80端口失败 检查端口占用: netstat -ano | findstr 0.0.0.0:80 发现System进程 (pid=4) ...
- idea的修改文件变颜色
直接用IntelliJ IDEA 拉SVN 工程 时,如下图所示都不勾选可以成功拉取.
- Python学习笔记(迭代、模块扩展、GUI 、编码处理等)
PythonIDLE中的编码处理 http://www.tuicool.com/articles/NbyEBr 原文标题:Python中实际上已经得到了正确的Unicode或某种编码的字符,但是看起来 ...
- Myeclipse中的web项目审查(jquery-2.1.1.min.js)出现错误
前言,本来在把web项目搞得好看一些,从网上下载了一个很炫酷的模板导入web中,无奈出现了错误,如下:
- PHP基础 之 数组(一)
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- POJ 1496 Word Index
组合数学....和上一题是一样的.... Word Index Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4303 Acce ...
- Ubuntu 12 升级 SVN 1.6 到 1.8 版本
在 Ubuntu 12 中使用 PhpStorm 10.x,CheckOut项目后,Event Log 提示: Subversion command line client version is to ...
- iOS resign code with App Store profile and post to AppStore
http://stackoverflow.com/questions/17545452/ios-resign-code-with-app-store-profile-and-post-to-appst ...