美文网首页
0.4 启动组件

0.4 启动组件

作者: GuoYiheng | 来源:发表于2017-01-10 17:45 被阅读0次

    四种组件类型中的三种,Activity,Service和Broadcast receiver是通过名为意图(intent)的异步消息进行启动.Intent 会在运行时将各个组件相互绑定,可以将 intent 视为其他组件派来请求一个执行动作(action)的信使,无论这个组件是否属于你的应用.

    Intent通过Intent对象来创建.如果是显式的意图(explicit intent),它定义的消息可以启动指定的组件;如果是隐式的意图(implicit
    intent
    ),它定义的消息可以用来启动指定类型的组件.

    • 对于activitiesservicesintent可以定义要执行的动作(例如,“查看”或“发送”某个内容),并且可以指定要执行动作的数据的 URI(以及正在启动的组件可能需要了解的信息).
      例如,intent传达的请求可以是启动一个activity来显示图像或打开网页.在某些情况下,我们可以启动activity来接收结果,在这种情况下,activity也会在intent中返回结果(例如,我们可以发出一个intent,让用户选取某位联系人并将其返回给我们,
      返回的intent包括指向所选联系人的URI).
    • 对于broadcast receiverintent只会定义要广播的通知.例如,指示设备电池电量不足的广播只包括指示“电池电量不足”的已知操作字符串.
    • Intent不会启动另一个组件类型:content
      provider
      ,后者是在成为ContentResolver的请求目标时启动. content resolver通过content
      provider
      处理所有直接事务,所以请求信息的组件就无需执行事务,只要在ContentResolver对象上调用方法就可以了.这会在content provider与请求信息的组件之间留出一个抽象层以确保安全.

    每种类型的组件有不同的启动方法:

    • 我们可以通过将Intent传递到startActivity()startActivityForResult()(当我们想让 Activity 返回结果时)来启动Activity(或为其安排新任务).

    • 从Android 5.0 (API level 21)开始,我们可以通过使用JobScheduler来预设动作.对于其他早期版本我们可以通过将Intent传递到startService()来启动服务(或对执行中的服务下达新指令).我们也可以通过将Intent传递到bindService()来绑定到该服务.

    • 可以通过将Intent传递到sendBroadcast(),sendOrderedBroadcast()sendStickyBroadcast()等方法来发起广播;

    • 可以通过在ContentResolver上调用query()来对内容提供程序执行查询.

    如需了解有关Intent用法的详细信息,请参阅Intent和Intent 过滤器文档.

    相关文章

      网友评论

          本文标题:0.4 启动组件

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