• 关于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_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肯定是被移除了的。等回去研究下,再继续总结。

     

     

  • 相关阅读:
    RTP 协议
    RTSP 协议分析 (一)
    RTSP协议分析(二)
    CreateRemoteThread简单应用
    函数开始处的MOV EDI, EDI的作用
    eax,ebx,ecx,edx,esi,edi,ebp,esp寄存器的作用
    C++函数调用原理理解
    WinDBG常用断点命令
    利用bu命令下延迟断点
    Windbg 查看SSDT表
  • 原文地址:https://www.cnblogs.com/breezemist/p/3370155.html
Copyright © 2020-2023  润新知