Android组件--意图(Intent)
1. 隐示调用和显示调用
参考资料:http://blog.csdn.net/harvic880925/article/details/38399723
1.概念
1). 显式意图:
能从intent上直观的看到跳转到哪一个界面
优劣:直接跳转,效率高
应用场景: 一般是自己内部跳转的时候
2). 隐式意图:
要指定action(动作) 、data(数据) 来达到跳转的目的,系统通过给定的action/data等在注册里去查找。
优劣:因为有查找过程,效率低下
应用场景:一般是跳转到其他应用中的某个界面,或者自己的应用界面想被其他应用打开。
2、intent到底发给哪个activity,需要进行三个匹配,一个是action,一个是category,一个是data。
理论上来说,如果intent不指定category,那么无论intent filter的内容是什么都应该是匹配的。但是,如果是隐式intent,android默认给加上一个CATEGORY_DEFAULT,这样的话如果intent filter中没有android.intent.category.DEFAULT这个category的话,匹配测试就会失败。所以,如果你的 activity支持接收implicit intent的话就一定要在intent filter中加入android.intent.category.DEFAULT。
3. 概念
acyivity
<intent-filter>
//注册一个自定义,当有人用到时new Intent去创建一个这个action然后调用
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
BroadcastReceiver
<receiver android:name=".MyReceiver">
<intent-filter>
//系统发送广播,也会new intent去创建这个action,然后调用
<action android:name="android.intent.action.MEDIA_MOUNTED"></action>
<data android:scheme="file"></data>
</intent-filter>
</receiver>
2.代码
manifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="sample.android_serialport_api.adapter"> <application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!--一个activity组件-->
<activity android:name=".MainActivity">
<!--意图过滤器-->
<intent-filter>
<!--action:行为;MAIN就是一开始进入main函数-->
<action android:name="android.intent.action.MAIN" />
<!--cateory:类别;LAUNCHER就是新建立一个图标-->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> <!--注册第二个界面:什么都没填写,表示只是进行了注册,通过显示意图intent调用-->
<activity android:name=".SecondActivity"></activity>
<!--注册第三个界面:加入了意图intent:表示通过隐示意图intent来调用-->
<activity android:name=".ThirdActivity">
<!--意图过滤器-->
<intent-filter>
<!--意图行为:相当于一个ID,是唯一的标识。当只有有intent的action行为为这个name的时候
,系统就会去注册中找有没有对应的,如果有,则会调用。不过这里一般为包名-->
<action android:name="aplex hahah test"/>
<!--如果为隐示意图,必须要设置cateory为DEFAULT,否则报错-->
<category android:name="android.intent.category.DEFAULT"/>
<!--还可以写一个data;-->
<!--<data android:xxx=""/>-->
</intent-filter>>
</activity>
</application> </manifest>
MainActivity.java
public class MainActivity extends AppCompatActivity {
//显示调用的
Button bt1;
//隐示调用的
Button bt2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1 = findViewById(R.id.bt1);
bt2 = findViewById(R.id.bt2);
bt1.setOnClickListener(new View.OnClickListener(){
public void onClick(View var1){
//显示Intent
Intent it1 =new Intent(MainActivity.this, SecondActivity.class);
startActivity(it1);
}
});
bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent it2 = new Intent();
it2.setAction("aplex hahah test");
it2.addCategory("android.intent.category.DEFAULT");
startActivity(it2);
}
});
}
}
SecondActivity.java
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
}
ThirdActivity.java
public class ThirdActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="sample.android_serialport_api.adapter.MainActivity"> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bt1"
android:text="第一界面;Intent显示调用"/> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bt2"
android:text="第二界面;Intent隐示调用"/> </LinearLayout>
效果:



2. 传递数据(没看,用到再说)
Android组件--意图(Intent)的更多相关文章
- Android组件系列----Intent详解(转载笔记)
[正文] Intent组件虽然不是四大组件,但却是连接四大组件的桥梁,学习好这个知识,也非常的重要. 一.什么是Intent 1.Intent的概念: Android中提供了Intent机制来协助应用 ...
- Android组件系列----Intent详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
- Android组件的通讯——Intent
转载:Android组件的通讯-Intent 1.概述 一个应用程序的三个核心组件——activities.services.broadcast receivers,都是通过叫做intents的消息激 ...
- android学习日记20--连接组件之Intent和IntentFilter
上次刚了解完Android的四大组件,现在学习组件间通信的Intent和IntentFilter 一.Intent 1.简述 Intent(意图)在应用程序运行时连接两个不同组件,是一种运行时的绑定机 ...
- 【Android实验】组件通信Intent
实验目的 [TOC] 了解使用Intent进行组件通信原理 掌握使用Intent启动Activity的方法 熟悉和掌握Android组件间通信的方式和技巧 实验要求 设计一个主Activity和一个子 ...
- Android中的Intent Filter匹配规则介绍
本文主要介绍了隐式Intent匹配目标组件的规则,若有叙述不清晰或是不准确的地方希望大家指出,谢谢大家: ) 1. Intent简介 Intent用于在一个组件(Component,如Activity ...
- Android中的Intent详解
前言: 每个应用程序都有若干个Activity组成,每一个Activity都是一个应用程序与用户进行交互的窗口,呈现不同的交互界面.因为每一个Acticity的任务不一样,所以经常互在各个Activi ...
- Android总结篇——Intent机制详解及示例总结
最近在进行android开发过程中,在将 Intent传递给调用的组件并完成组件的调用时遇到点困难,并且之前对Intent的学习也是一知半解,最近特意为此拿出一些时间,对Intent部分进行 ...
- Android组件系列----BroadcastReceiver广播接收器
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
随机推荐
- JaveScript初学-基础语法
一.JavaScript数据类型 JavaScript中,一切皆对象. JavaScript拥有动态类型,使用var关键字(也可以不必)进行声明——字符串.数字.布尔.对象.Null.Undefine ...
- .NET处理HTTP请求
第一种:使用HttpWebRequest string result = ""; HttpWebRequest request = (HttpWebRequest)WebReque ...
- [JS&Jquery]实现页面表格中相同内容的行或列合并
详细链接:https://shop499704308.taobao.com/?spm=a1z38n.10677092.card.11.594c1debsAGeak<script type=&qu ...
- ASP.NET添加Mysql数据源
在ASP.NET的数据源控件上添加mysql数据库连接,首先需要在windows系统下添加mysql的数据源才能在vs中添加数据源 1.在控制面板下打开系统与安全-->打开管理工具-->点 ...
- 配置DNS服务器转发器
1.(windows server 2008 r2)控制面板->管理工具->服务器管理器->DNS->服务器图标->属性 2.转发器->编辑 3.填写DNS并点击确 ...
- vue 生命周期 笔记
生命周期:一个组件从创建到销毁的这个过程叫做生命周期 生命周期钩子函数 1.组件从创建到销毁的过程 1.创建前 创建后 2.挂载前 挂载后 3.更新前 更新后 4.销毁前 销毁后 beforeCr ...
- COGS1752. [BOI2007]摩基亚Mokia(CDQ,树状数组)
题目描述 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它能够回 ...
- 《快学Scala》第三章 数组相关操作
- 看个AV也中招之cve-2010-2553漏洞分析
试想:某一天,你的基友给你了一个视频文件,号称是陈老师拍的苍老师的老师题材的最新电影.avi,你满心欢喜,在确定文件格式确实为avi格式后,愉快的脱下裤子准备欣赏,打开后却发现什么也没有,而随后你的基 ...
- 干货 | 精选《SQL注入、渗透、反病毒》学习总结集锦给你们~
学到手的都是本事,如果觉得对你有帮助也欢迎分享给身边的基友们吧! 分享干货,手留余香哦~ 本次“开学季拜师活动”的徒弟们在师父的精心指导下,在短短5天内得到了迅速地成长,以前或当时遇到的问题都能够柳暗 ...