Android intent的显示意图和隐式意图的区别_qinwendou的博客-程序员秘密_简述显示意图和隐式意图的区别

技术标签: 原创  显示意图和隐式意图  android  intent  Android  

一:两种启动意图:
1.显示意图启动的两种方法:

      //显示意图
    public void click2(View v){
     Intent intent = new Intent();
     intent.setclass(this,SecondActivity);
     startActivity(intent);
}
//显示启动拨号器

public void click3(View v){
     Intent intent = new Intent();
    intent.setClassName("com.android.dialer","com.android.dialer.DialtactsActivity");
     startActivity(intent);

}
2.隐式意图启动自己定义的activity的方式

  <activity android:name="com.qwd.runactivity.SecondActivity">
       <intent-filter>
       <action android:name="a.b.c"/>
       <category android:name="android.intent.category.DEFAULT">
       <intent-filter>
/activity>

//隐式启动SecondActivity
public void click4(View v){
Intent intent = new Intent();
intent.setAction("a.b.c");
startActivity(intent);

}
3.隐式意图启动系统的activity的方式

 //隐式启动拨号器
 public void click5(View v){
Intent intent = new Intent();
intent.setAction(Intent.ACTION_DIAL);
startActivity(intent);

}
4.注意:隐式意图必须全部匹配

    <activity android:name="com.qwd.runactivity.SecondActivity">
    <intent-filter>
    <action android:name="a.b.c"/>
    <data android:scheme="qwd"/>
    <category android:name="android.intent.category.DEFAULT">
    <intent-filter>
</activity>

//隐式启动SecondActivity
public void click6(View v){
Intent intent = new Intent();
intent.setAction("a.b.c");
intent.setData(Uri.parse("qwd:abc"));
//如果不匹配Category,那么系统会自动添加以下代码
//intent.addCategory(Intent.CATEGORY_DEFAULT);
startActivity(intent);

}
4.1.mimeType也必须匹配 setData匹配的不是data标签而是scheme属性, setType匹配的是mimeType属性
5.隐式意图和显示意图的总结
###显式启动
* 指定上下文和目标Activity的字节码
* 用于启动同一应用的Activity
* 指定目标Activity所在的应用的包名和目标Activity的包名类名(然并卵)
* 用于启动不同应用的Activity

隐式启动

  • 定义隐式intent,启动Activity时,系统会遍历所有清单文件,寻找是否存在与该intent匹配的intent-filter,如果有,则启动intent-filter对应的Activity,如果没有,则报错
  • 匹配:所有子节点要完全相同
  • intent-filter可以定义多个,任意匹配一个即可
  • 多个action或者data任意匹配一个即可
  • setData匹配的是scheme
  • setType匹配的是mimeType
  • data标签只要有scheme,就必须匹配,同理只要有mimeType,就必须匹配

应用场景

  • 启动同一个应用的Activity,使用显式
    • 显式效率高于隐式,能用显式就用显式
  • 启动不同应用的Activity,使用隐式
    • 如果隐式intent与多个Activity的intent-filter匹配,那么会弹出对话框让用户选一个来启动
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qinwendou/article/details/54988491

智能推荐

prometheus使用 (十六) alertmanager特性--告警抑制_默子昂的博客-程序员秘密_alertmanager 抑制

2. 抑制抑制是指当某?告警发出后,可以停?重复发送由此告警引发的其它告警的机制。例如,当集群不可访问时触发了?次告警,通过配置Alertmanager可以忽略与该集群有关的其它所有告警。这样可以避免接收到?量与实际问题?关的告警通知。抑制机制同样通过Alertmanager的配置?件进?设置。抑制是指某一告警发出后,可以停止重复发送由此告警引发的其他告警的机制(我们也不想,节点一宕机,pod全给你报错吧)例如: 集群不可访问时触发了一次告警,通过配置alertmanager可以忽...

前端后端分离知识点学习(二)_Cas狗的博客-程序员秘密

前端后端分离知识点学习(二)一、常用的前端模板网站1、Bootstrap自带模板;2、StartBootstrap模板;3、vali-admin的模板;4、百度相关模板;二、beego模板技术搭建页面1、引入css

PTA浙大版《Python 程序设计》题目集_Re:从零开始的代码生活的博客-程序员秘密_pta浙大答案

本题目集是在2021年初写的,当时受疫情影响,题目集是对所有用户开放的,后来题目集就有权限了,需要购买浙大的Python教材才能用。题目集记录了我初学Python时的经历,所以前几道题看起来会不符合Python简洁的特性。初学Python时,没有老师教我,完全就是在自学,所以不会做的题也会上网上搜答案,这就导致题目集中有些题和网上的很相似。其他题目集:PTA浙大版《C语言程序设计实验与习题指导(第3版)》题目集(参考代码)PTA浙大版《C语言程序设计(第3版)》题目集(参考代码)PTA团体程序设

算法与数据结构基础(三)之遍历二叉树_duter_sun先生的博客-程序员秘密

算法与数据结构基础(三)之遍历二叉树前序遍历(递归)中序遍历(递归)后序遍历(递归)测试代码前序遍历(递归)void PreOrder(Node* pParent){ if (pParent == nullptr) return; cout &lt;&lt; pParent-&gt;value &lt;&lt; " "; PreOrder(pParent-&gt;left); P...

springboot war打包步骤_c_zyer的博客-程序员秘密

springboot war打包步骤,注意点,出现的问题packaging的设置<packaging>war</packaging> 修改pom.xml文件依赖

string与char*转换(经vs2019测试可行)_lǜ酒红炉zhī影斜的博客-程序员秘密

1.string转换为CString:CString string2CString(string StrData){CString CStrData(StrData.c_str());return CStrData;}2.CString转换为string:string CString2string(CString csStrData){string strRet ;char s...

随便推点

Xilinx Multiboot实例演示_碎碎思的博客-程序员秘密

原理关于Multiboot的原理参考《Xilinx 7系列FPGA Multiboot介绍-远程更新》,基本原理都在此文写的很清楚,本文主要从实例出发演示Multiboot。补充FPGA ...

GB18030字符编码格式和点阵字库_何事误红尘的博客-程序员秘密_gb18030

中国国bai家标准GB2312就是简体中文字符集;台湾计算机界使用的BIG5码是繁体字中文字符集;日本的JIS X0208标准是日文汉字字符集;韩国的KS C5601是韩国汉字字符集。ANSI(美国国家标准学会)推出了一种双字节编码的标准,将上述三国四方的字符集加以统一,称为 ANSI 编码。在简体中文操作系统中,ANSI 编码代表 GBK 编码;在日文操作系统中,ANSI 编码代表 Shift_JIS 编码。 不同 ANSI 编码之间互不兼容,在国际间信息交流时,无法将属于两种语言的文字,存储在同一段 .

解决多表关联转换json内存溢出_lianbancai的博客-程序员秘密

使用Hibernate时候对表关联,在把数据转换成Json时,由于两个字段相互包含,输出会引发内存溢出,下面的方法可以帮助你过滤掉其中一个字段,就不会内存溢出了Gson gson= new GsonBuilder().setExclusionStrategies(new ExclusionStrategy() {  @Override  public boolean shouldSki

tpyBoard102超声波测距2.0--数据滤波_nutron-ma的博客-程序员秘密_超声波滤波

# main.py -- put your code here!"""超声波测距2.0新增:1.加上数据滤波程序,增加准确性马玉华 2020-1-2""""""原理:(1)用IO口给TRIG触发测距,给最少10us的高电平信呈。(2)模块自动发送 8 个 40khz 的方波,自动检测Echo是否有信号返回。(3)Echo有信号返回,通过io输出一个高电平,高电平持续的时间就是...

css盒子模型_m0_59737891的博客-程序员秘密

盒模型的认识基本概念:标准模型+IE模型。 包括margin,border,padding,content 标准模型和IE模型的区别 css如何设置获取这两种模型的宽和高 js如何设置获取盒模型对应的宽和高 根据盒模型解释边距重叠 BFC(边距重叠解决方案,还有IFC)解决边距重叠一、基本概念:标准模型+IE模型什么是盒模型:盒模型又称框模型(Box Model),包含了元素内容(content)、内边距(padding)、边框(border)、外边距(margin)几个要素。如图:

如何利用MSDN在线查询MFC里面的API_kuer6983的博客-程序员秘密

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/qq_37769473/article/details/828316681. 进入MSDN:https://msdn.microsoft.com/zh-cn/2. 找到查询框3. 输入函数并查询4. 找到对应的Vi...