美文网首页
Intent 显式/隐式 启动Activity基础知识

Intent 显式/隐式 启动Activity基础知识

作者: 古宇强 | 来源:发表于2018-08-25 14:57 被阅读26次

    1.作用

    作为启动 Activity 和Service 组件的信使(包括应用内和应用外组件),传递可序列化数据,这篇主要讲启动Activity

    2.分类

    1. 显式Intent
      a.例子:Intent intent = new Intent(Context context,Class<Activity> cls);
      intent的几种创建方式
      b.一般用于启动应用内的Activity
    2. 隐式Intent
      a.例子:Intent intent = new Intent(String action,Uri uri);
      b.一般用于启动应用外的Activity,操作系统会自动把匹配隐式Intent的Acttivity显
      示出来供用户选择,匹 配的规则跟Activity声明的 Intent-filter 有关
      c.主要组成部分:
      (1)action 要执行的操作。也可以通过 setAction() 设置
      (2)uri待访问数据的位置。也可以通过 setData() 和 setDataAndType() 设
      置。可以是网页的URL,某个文件的,或指向 ContentProvider 的某个内容 URI
      (3)操作涉及的的数据类型。setType() 和 setDataAndType()设置。如intent.setType("text/html")
      (4)可选类别。描述何时,何地或者如何启动某个 Activity。
      intent.addCategory(Intent.CATEGORY_LAUNCHER)

    3.传递数据

    4.注意事项

    1.如果要通过隐式 Intent 启动其他应用的 Activity 时(比如要启动手机系统自带相机拍照时),需先调用(intent.resolveActivity(PackageManager) != null) 或者通过List<ResolveInfo> allMatchesPackageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)判断手机中是否有能够响应这个Intent的Activity的应用

    2.类别 DEFAULT 在调用 StartActivity() 和 StartActivityForResult() 时自动添加到隐式 Intent 中,不用通过 addCategory() 方法设置也会有

    5.知识扩展--任务

    1.概念:任务是一个 Activity 栈,android 系统用任务来跟踪用户的状态,通过默认启动器打开的应用都有自己的任务。位于栈底的 Activity 通常称为基Activity,当用户看到的是基Activity时按返回键就会回到桌面主屏幕。

    2.表现:一般打开应用内或应用外的新 Activity 都会处在当前应用的任务中。

    3.在新任务中启动 Activity的方法。

    1. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
    2. 在Lillipop设备上,对于类别为 SEND 或 SEND_MULTIPLE 启动的 Activity,会创建独立的新任务,在这之前的设备不会。在Lillipop设备上想启动多任务可以给Intent添加Intent.FLAG_ACTIVITY_NEW_DOCUMENT 或在androidManifest中的activity标签声明:android:documentLaunchMode = “intoExiting”。但是通过用这个方式启动,发送的数据和已有的任务相同的Intent不会启动新的任务。如果想要在任何时候都启动新任务:同时添加FLAG_ACTIVITY_NEW_DOCUMENT 和FLAG_ACTIVITY_MUTIPLE_TASK 或者 documentLaunchMode = “always”

    6.知识扩展--进程

    1.概念:进程是操作系统创建的,供应用对象生存和应用运行的地方。一个进程需要一个虚拟机来运行。

    2.进程和任务区分:

    • 同:每个Activity都只与一个进程和一个任务相关联。这是进程和任务的唯一相似之处
    • 异:任务只包含Activity,而进程包括的应用的所有运行代码和对象


    相关文章

      网友评论

          本文标题:Intent 显式/隐式 启动Activity基础知识

          本文链接:https://www.haomeiwen.com/subject/evowiftx.html