zoukankan      html  css  js  c++  java
  • android API Guides学习--Intent and Intent Filters

    Intent是一个消息传递类,同时可以启动一些组件

    作用:

    1启动一个activity组件。

    通过Context类的 startActivity()/ startActivity ()方法启动activity组件.

    2启动一个service组件

    通过Context类的startService()方法启动此组件,只能执行一次性操作(例如下载文件)。

    通过Context类的 bindService()方法

    3发送一条广播

    通过Context类的sendBroadcast(), sendOrderedBroadcast(), or sendStickyBroadcast()给别的组件发送消息。

    Intent类型:

    1显式intent:

    当你知道你想要启动的组件时,指定将启动组件的类名(需创建一个具体的组件)。例如后台下载文件,启动一个activity响应用户行为。

    当你一使用一个显示intent去启动组件时,就在intent类中指定了详细的intent属性(除了Component name外,其他属性可不选)。

    一般来说,显式intent用来启动特殊的activity与service。

    2隐式intent:

    没有明确指定一个组件名称。一般用于在app中调用另一个app的组件。

    当你使用隐式intent时,android系统去查找合适的组件来启动。如果intent匹配intent filter,则启动组件并把intent传递给intent类,如果有多个intent filter符合,则弹出对话框让用户选择。

    通过resolveActivity()方法可判断是否查找到合适的组件。

    intent filter是manifest文件中的语句,他描述了组件想要接收的各种类型的intent。

    为了确保你的app是安全的,使用显式intent启动一个service时不要给service声明intent filter。使用隐式intent启动service是有安全隐患的。因为你不能确定哪个service将响应intent,用户也看不到是哪个service在启动。

    创建一个intent类

    intent类携带的主要信息:

    Component name:

    将要启动的组件名。

    这个属性是可选择的。

    但如果你想创建一个明确的组件,那么你要确定组件名。(显式intent)

    如果你不确定组件名,系统以intent其他属性决定启动哪个组件.(隐式intent)

    当启动service组件时,为了确保你的app是安全的,最好要有明确的组件名。

    你可以通过intent构造方法,或者setComponent(), setClass(), setClassName()方法来确定将要启动的组件名。

    Action:

    通过一个字符串确定将要执行的动作。例如查看或选择。

    你可以在你的app中定义一个action属性的字符串供你使用,但是你应该优先使用intent类或其他框架类中已定义好的action属性字符串。

    ACTION_VIEW:当你有些信息需要给用户显示时,例如在map app中显示地址

    ACTION_SEND:用户想要通过另一个app分享数据。

    你可以通过intent类中setAction()方法或intent构造方法来设置action属性。

    如果想要定义一个action属性字符串的话,不要忘了定义时把包名作为字符串的前缀。

    eg:

     1 static final String ACTION_TIMETRAVEL = "com.example.action.TIMETRAVEL"; 

    Data:

    URI类引用的数据行使MIME类型数据的职能。提供的数据的类型一般由intent的action决定。

    除了URI之外,在创建intent类非常重要事情是指定数据类型(MIME type).

    设置URI类型,用setData()方法,设置MIME类型,用setType()方法。两种都设置用setDataAndType()方法.(intent类)

    Category:

    给intent以字符串的形式添加额外信息。

    大部分intent不需要添加category。

    CATEGORY_LAUNCHER:activity是一个初始的任务activity并且他被列在应用程序管理器上。

    CATEGORY_BROWSABLE:目标activity允许浏览器通过引用链接启动他来显示数据

    通过addCategory()方法添加Category属性

    Extras:

    通过键值对的形式保存额外的信息来完成要求的功能,就好像一些动作和特定的数据URI对应,一些动作和特定的extras对应。

    通过putExtra()方法添加extras.

    自定义Extra字符串。

     1 static final String EXTRA_GIGAWATTS = "com.example.EXTRA_GIGAWATTS"; 

    Flags:

    定义了如何启动activity以及如何对待他。

    翻译自android 官网API Guide。

  • 相关阅读:
    CentOS7.6安装Kubernetes v1.15.1
    数据库三大范式
    linux
    linux
    linux
    linux
    Django contenttypes组件
    Django自带的用户认证
    Django rest framework(7) ---分页
    Django rest framework(6) ---序列化
  • 原文地址:https://www.cnblogs.com/shangshicc/p/3923407.html
Copyright © 2011-2022 走看看