博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Intent
阅读量:6843 次
发布时间:2019-06-26

本文共 1155 字,大约阅读时间需要 3 分钟。

 

今天主要看了一下Intent的Google API文档,也做了一些实验,实验的部分内容可以参考另一篇博客。

有以下的体验。

 

创建Intent的时候有两种方式:显式Intent和隐式Intent

  • 显式Intent:创建的时候指定包名、类名等具体信息。可以使用Intent(Context packageContext, Class<?> cls)、setComponent(ComponentName component)来创建。
  • 隐式Intent:通过Action、Category、MineType等信息,系统根据这些信息找到对应的Component,有可能找不到,这时会报错;也有可能会找到多个,如果是调用Activity,则会把所有对应的Activity提供给用户选择;如果调用的是Service,则调用priority最大的那个;如果是Receiver,则会调用所有的相应Component。

    

需要注意以下几点:

  • 在操作Intent的时候,如果想要同时使用Data和MineType,则一定要使用setDataAndType方法,因为setData和setType会将对方设为null
  • 在使用隐式Intent调用Activity的时候,如果系统找不到Activity,就会报错,程序也会因此而崩溃。可以使用resolveActivity判断是否能够找到与这个Intent对应的Activity,例如下面代码中的判断。而Service和Receiver如果找不到,则不会抛出异常。
// Verify that the intent will resolve to an activityif (sendIntent.resolveActivity(getPackageManager()) != null) {    startActivity(sendIntent);}
  • 在创建Service的时候,最好通过显示Intent来创建,这样会更加安全。如果使用隐式Intent,找到多个Service,则会根据IntentFilter的priority的值来调用,调用priority值最大的一个。

 

priority修饰intent-filter标签时,需要注意的地方:

  • 修饰Activity 并且值为负值时,Activity不会被调用;匹配多个Activity,并且值都为正,不管priority的大小,都会提供给用户选择
  • 修饰Service 时,不管值的正负都会加入判断,priority值最大的将会被调用
  • 修饰Receiver 时,不管值的正负都会执行,priority值大的将会先执行

 

转载于:https://www.cnblogs.com/huanyou/p/5079255.html

你可能感兴趣的文章
神州优车推出智慧交通开放平台 3年将投入3亿元
查看>>
中小型网站架构分析及优化
查看>>
5、Windows has encountered a problem communicating with a device connected to your computer
查看>>
超级兔子虚拟磁盘加速器1.62
查看>>
在Linux上的安装Tomcat
查看>>
python---内置函数
查看>>
Exchange 2010 (一) 为多台CAS/HUB配置证书
查看>>
SQL Injection(SQL注入)
查看>>
apache 编译安装与做nagios前端展示
查看>>
Powershell窗口查看帮助信息
查看>>
使用Elasticsearch快速搭建食谱搜索系统
查看>>
LVS 三种工作模式原理、以及优缺点比较
查看>>
raid1+0磁盘阵列创建、性能测试与故障模拟
查看>>
电脑启动流程
查看>>
DHCP
查看>>
JVM结构、GC工作机制详解
查看>>
VMware Horizon FLEX介绍
查看>>
Spring装配Bean---使用xml配置
查看>>
CentOS5 sendmail服务器配置
查看>>
DNS搭建
查看>>