Android组件 Activity的显式启动与隐式启动详解

Android四大组件之Activity(二)—— Component属性、显式隐式Intent 1、使用的是Android 7.1.2的源代码: https://pan.baidu.com/s/1XcVD68cC_2wKtm8jJkdNQA przv 2、感谢IT先森的系列博客: Android应用进程创建流程大揭秘 Android四大组件之bindService源码实现详解 Android四大组件之Activity启动流程源码实现详解概要 Activity启动流程(一)发起端进程请求启动目标Activity Activity启动流程(二)system_server进程处理启动Activity请 阅读详情
AI摘要

本文详细介绍了Android中Activity的启动方式,包括显式启动和隐式启动的不同方法。显式启动通过Intent直接指定目标Activity,而隐式启动则依赖于在AndroidManifest.xml中配置的<intent-filter>来匹配Intent。

显式启动Activity:

显式启动比较简单,首先创建一个Intent,指定应用程序上下文和需要启动的Activity,然后调用startActivity来启动新的Activity。

<!--AndroidManifest.xml-->
<activity android:name=".SecondActivity"></activity>
//启动Activity
Intent it = new Intent(this, SecondActivity.class);
startActivity(it);

隐式启动Activity:

打开AndroidManifest.xml查看里面的代码,在学习隐式启动Activity前需要了解<intent-filter>里的参数。

<action android:name="android.intent.action.MAIN"/>

  • Activity的别名,可以修改自己Activity的名称
  • android.intent.action.MAIN决定应用程序最先启动的Activity

<category android:name="android.intent.category.DEFAULT"/>

  • 给Activity进行分组,可以自己添加一个组别
  • 一种默认的category,在调用startActivity()方法的时候会自动将这个category添加到Intent中
  • 如果自己定义的某个Activity要通过隐式启动,在AndroidManifast.xml必须加上android.intent.category.DEFAULT,否则不起作用

<category android:name="android.intent.category.LAUNCHER"/>

  • android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里
    (想要App隐藏图标,去掉LAUNCHER,或者使用DEFAULT即可)
    在这里插入图片描述
  • 如果一个应用多个Activity都设置了这个参数,则程序列表里会显示多个该应用Activity的图标

1.通过Activity的别名隐式启动

<activity android:name=".SecondActivity">
    <intent-filter>
        <!--取别名-->
        <action android:name="com.example.test.ACTION_START"/>
        <category android:name="android.intent.category.DEFAULT"/>

    </intent-filter>
</activity>
//隐式启动系统Activity
//参数1:字符串(某Activity的别名)
Intent it = new Intent("com.example.test.ACTION_START");  
startActivity(it);

2.通过别名和自定义的种类隐式启动

<activity android:name=".SecondActivity">
    <intent-filter>        
    	<action android:name="com.example.test.ACTION_START"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="com.example.test.MY_CATEGORY"/>
    </intent-filter>
</activity>
Intent it = new Intent("com.example.test.ACTION_START");  
//添加自定义的种类
intent.addCategory("com.example.test.MY_CATEGORY");
startActivity(it);

3.根据用户的数据类型打开相应的Activity
Intent.ACTION_VIEW是Android系统内置的一个动作,通过Uri.parse()方法解析后,再调用Intent.setData()方法将这个Uri对象传递进去

Intent it = new Intent("Intent.ACTION_VIEW");  
it.setData(Uri.parse("https://www.baidu.com"));
startActivity(it);

//参数1:字符串(某Activity的别名)
//参数2:打开的路径,通过协议来具体的确定打开什么Activity
Intent it2 = new Intent("Intent.ACTION_VIEW", Uri.parse("https://www.baidu.com")); 
startActivity(it2);

Intent it3 = new Intent("Intent.ACTION_DIAL", Uri.parse("tel:18812341234")); 
startActivity(it3);

4.响应用户指定的数据类型

<activity android:name=".SecondActivity">
    <intent-filter tools:ignore="AppLinkUrlError">        
    	<action android:name="com.example.test.ACTION_START"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:scheme="https">
    </intent-filter>
</activity>

这里我们通过android:scheme指定了数据的协议必须的https协议,这样此Activity就能和浏览器一样,响应一个打开网页的Intent了。

Android语言基础教程(81)Android基本程序单元Activity之创建、配置、启动和关闭Activity:Activity整活指南:从创建到关闭,让你的Android应用“活”起来! Activity堪称Android应用的社交牛逼症患者,每个页面都是它的舞台!本文将用最接地气的方式,手把手教你如何“捏”出一个Activity——从XML画界面到Java写逻辑,从AndroidManifest注册到多种启动姿势,甚至如何优雅“送走”它。全程附代码示例,带你体验登录跳转的完整流程,保证你看完直呼:“原来Android开发就像搭乐高,根本停不下来!”#Android开发 #Activity入门 #程序员幽默 阅读详情

相关推荐

Android显式启动activity和隐式启动activity分别都是怎么启动?请举例说明二者使用时的注意事项。

在Android中,启动Activity主要有两种方式:显式启动(Explicit Intent)和隐式启动(Implicit Intent)。这两种方式在启动Activity时各有特点和注意事项。

1051

隐式启动

1.什么是隐式Intent ? 在安卓中分为显式启动和隐式启动 显式Intent:直接指定目标组件的ComponentName(组件名),调用setComponent()、setClass()、setClassName()明确指定组件名。 隐式Intent:没有明确指定组件名的Intent为隐式意图。比如调用Action去拨打电话,打开网页。安卓系统中会根据你设定的动作ACtion、类别、数...

Sun_0117的博客 1090

爬取二手房数据:Python爬虫+Geopy实战,看透房价与地理位置的隐藏关系

哪些区域单价虚高(房源少但单价远高于周边);哪些小区性价比高(靠近地铁/学校,单价低于同地段平均水平);房价与地理位置的量化关系(如距离地铁每远1公里,单价下降多少)。如果想扩展分析范围,可爬取多个城市/区域的数据,对比不同城市的房价差异;或结合时间维度(定期爬取),分析房价的涨跌趋势。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 948

记录:移动设备软件开发(Activity的显式启动和隐式启动)

Android的应用程序包含三种重要组件:Activity、Service、BroadcastReceiver,应用程序采用了一致的方式来启动它们——都是依靠Intent来启动的,Intent就封装了程序想要启动的程序的意图。隐式启动:系统根据Intent的动作和数据来决定启动那个Activity,指的是没有指定Component属性,没有明确指定要启动哪个组件,引用将会根据Intent指定的规则去启动符合条件的组件,但具体是哪个组件不确定。不足:被启动的应用的包名或者类名发生变化后,就会无法启动。

m0_72471315的博客 1654

【博弈论】势博弈(potential game)、EPG以及最佳响应、Nash均衡和帕累托(pareto)最优的理解

文章目录前言一、Potential game二、Nash均衡和Pareto-optimal(帕累托最优)1.Nash 均衡2.Pareto最优三、Best response(最佳响应)四、Exact potential game(EPG)1.合作-傀儡博弈2.合作博弈3.傀儡博弈4.自激博弈5.双边对称交互博弈使用理解 前言 本文主要详细讲解potential game的概念以及Exact potential game 的定义和分类,以及这么博弈方法是如何在论文中引入并使用的,本文仅是对自己在该模块

weixin_44535200的博客 2万+

matlab中高频变压器怎么找,干货|手把手教你绕制高频变压器

原标题:干货|手把手教你绕制高频变压器绕制一个变压器所需材料:磁芯、骨架、各种铜线、麦拉胶带。变压器参数:磁芯:EE22原边:134T(1-3脚),辅助:32T(5-4脚),输出:15T(10-9脚)原边电感:1380±10%uH漏感:≤44uH引脚分布图: 特别注意:绕制方法为网上下载,其中变压器绕制方法是对的,但其中存在着很多问题(比如,正规变压器的绕组的头和尾是要添加铁氟龙套管的,每一层之间...

weixin_30895121的博客 2123

Android Activity的隐式调用(跨进程)★

1.activity启动方式 Android 启动 Activity 分为两种:显式调用和隐式调用。显式调用需要明确地指定被启动对象的组件信息,包括包名和类名,而隐式调用则不需要明确指定组件信息。原则上一个 Intent 不应该既是显式调用又是隐式调用,如果二者共存的化,以显式调用为主。 2.隐式调用 隐式调用需要Intent能够匹配目标组件的IntentFilter中设置的过滤信息,如果不匹配将无法启动目前activity。这里,目标组件就是要启动的Activity,IntentFilter表示意图过滤,

zenmela2011的专栏 3413

DNF服务器搭建服务端架设教程

第三步:打开winscp,上传Script.pvf(版本)、publickey.pem(密钥)、df_game_r(等级补丁)到home/neople/game目录下。第四步:打开putty输入./stop,./stop(两次,如果是首次架设不用./stop),./run,运行刚才上传的三个游戏文件。③是本地配置登录器的配置文件,自动生成,可以删除,但是还是会根据你生成的登录器生成这个文件,类似日志。⑤密钥中所上传的三个文件其中之一,重中之重,上传到服务器的密钥必须和登录器中的密钥为一个。

V13807970340的博客 6256

关于android隐式启动activity的分析和说明,Android 隐式启动Activity之:action,category,data...

Android 启动Activity 分为两种:显示启动 和 隐式启动显示启动:就是通过Intent 指明 那个包名+类名Activity,是开发中最常用的启动方式,在这就不说了,不是本文的目标隐示启动:现在说一下隐式启动。隐式启动也是通过Intent ,不过必须给Intent 加上匹配数据,匹配数据必须和目标Activity的其中一个过滤器配上,方可启动目标Activity。关于 匹配数据和 ...

weixin_29195217的博客 2295

一种车内UWB圆极化天线的理论推导及具体实现

本文详细描述了一款工作于UWB channel 9也即中心频率为7987.2MHz,带宽为499.2MHz的圆极化天线。首先是理论推导圆极化天线的物理尺寸参数,分析物理尺寸参数对天线性能指标的影响。然后分析圆极化天线在汽车驾驶室这种狭窄空间应用中带来的优势,也即可以最大化的极化损失多径,提高主径接收信号的信噪比。

weixin_44555637的博客 2961

Windows非分页缓冲池内存泄漏实战:PoolMon与RAMMap高效排查指南

本文详细介绍了Windows系统中非分页缓冲池内存泄漏的实战排查方法。当系统出现卡顿且内存占用异常增长时,通过RAMMap工具快速定位非分页缓冲池异常,并利用PoolMon监控内核内存分配标签,精准锁定泄漏源。文章提供了从确认症状、安装工具到使用findstr命令溯源驱动文件的完整五步排查流程,并总结了常见泄漏标签与解决方案,帮助用户高效解决深层系统内存问题。

weixin_28455801的博客 1008

关于Activity的隐式启动

一个字符串,支持自定义,系统会设置一些自己的aciton,比如ACTION_SEND,发送邮件Action_CALL,呼叫指定的电话号码ACTION_DIAL,拨打电话等等。Intent中的action只有一个和过滤规则中的一个相同即可匹配成功。category要求intent中的所有的规则和intent-filter中的相同,即多对多的关系,否则匹配失败。经本人代码测试,intentFilter设置了action后,也必须设置category,否则会报匹配失败无法找到对应的activity。

Humphrey0313 3328

手把手教你学基带SOC芯片(4.4.9)--基带芯片的电源管理实例:高通 Snapdragon 系列实例(十)

Snapdragon 888 通过支持多种深度睡眠模式,如 AOAC 模式、低功耗模式和深度睡眠模式,以及智能电源管理技术,实现了对功耗的精细管理。这些模式不仅延长了设备的电池寿命,还确保了用户在各种使用场景下的良好体验。无论是保持网络连接、限制后台活动,还是完全关闭不必要的功能,Snapdragon 888 都能够灵活应对,提供高效的功耗管理方案。

MHD0815的博客 740

Android开发中Intent的核心作用与实战应用

Intent作为Android四大组件间通信的核心机制,本质上是一种消息传递对象,通过显式或隐式方式实现组件调用。其技术价值在于解耦组件依赖,支持跨应用协作,是Android架构的重要基础。典型应用场景包括Activity跳转、Service启停、广播收发等系统级交互。在工程实践中,开发者需掌握Intent Filter匹配规则、Flag控制技巧等高级用法,同时注意大数据传输优化和跨应用安全防护。随着Android系统演进,后台启动限制等新特性也影响着Intent的最佳实践。

weixin_30919571的博客 372

精密装配机器人系列编程:ABB IRB 120_(20).编程项目设计与实施

在精密装配机器人系列编程中,项目的成功设计与实施涉及多个关键步骤。从项目需求分析到最终调试,每一个环节都需要细致的考虑和专业的技术。选择合适的编程语言、设计良好的程序结构、掌握调试技巧以及解决常见问题,都是确保机器人高效、稳定运行的重要因素。通过不断优化和改进,可以提高生产效率和产品质量,满足不断变化的生产需求。

zhubeibei168的博客 1243

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Android Activity生命周期与开发实践详解

Activity作为Android应用开发的核心组件,本质上是用户界面的控制单元,负责管理窗口视图与用户交互。其生命周期机制(onCreate/onStart/onResume等)构成了Android应用运行的基础框架,通过Intent实现组件通信,配合任务栈管理实现多页面跳转逻辑。在工程实践中,开发者需重点关注内存泄漏预防(如WeakReference使用)和启动性能优化(如ViewStub延迟加载),同时结合ViewModel和LiveData等现代化架构组件提升开发效率。掌握Activity的工作原理

weixin_34112181的博客 364

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android Intent显式与隐式跳转详细讲解

Android Intent是一种重要的消息传递机制,可用于在应用程序之间进行通信。Intent 可以分为显式 Intent 和隐式 Intent。显式 Intent 明确指定要启动的 Activity,而隐式 Intent 只指定 Action、Category、Data 等元素,由系统匹配合适的 Activity。Intent 可以传递数据,使用 putExtra() 方法添加键值对即可。数据类型可以是基本类型、字符串、Parcelable 对象等。Intent 还可以启动服务和发送广播。

qq_64125090的博客 3914

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Android显式启动与隐式启动Activity

前段时间立志坚持写博客,但是发现自己的积累的确不多,于是假期泡了泡图书馆,读了一些很有价值的文章。收获颇多,今天的文章分享为主,共同学习。    为什么要写显式启动与隐式启动Activity。这源于自己的一次面试,被Baidu工程师问道,但是后来觉得自己回答的不好,废话少说,进入正题。      如题,Android的Acitivity启动大致有两种方式:显式启动与隐式启动。下面分别介绍:

Kevin的逆袭博客 4619

【Android】简述显式Intent和隐式Intent的区别

定义: Intent定义:Intent是一种在不同组件之间传递的请求消息,是应用程序发出的请求和意图。作为一个完整的消息传递机制,Intent不仅需要发送端,还需要接收端。 显式Intent定义:对于明确指出了目标组件名称的Intent,我们称之为显式Intent。 隐式Intent定义:对于没有明确指出目标组件名称的Intent,则称之为隐式Intent。 说明: Android系统使用Inte...

三桥君 | 人工智能领域专家 5229

详解显式intent和隐式intent

Intent是Android程序中各组件之间进行交互的一种重要方式。它不仅可以指明activity想要执行的动作,也可以在不同组件之间传输数据。 Intent分为两种,显式intent和隐式intent,以下分别进行描述: 一、显式intent bt.setOnClickListener(new View.OnClickListener() { @Overrid...

aries9986的博客 6739

显式和隐式启动Activity、Service

Intent寻找目标组件的两种方式: 显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的。隐式Intent:通过Intent Filter来实现的,它一般用在没有明确指出目标组件名称的前提下,一般是用于在不同应用程序之间。 1.显式启动Activity: //显示方式声明Intent,直接启动Sec

what93的博客 4575

Android中Activity显式调用和隐式调用的区别以及Intent Filter知识点总结

Activity显式调用和隐式调用的区别以及Intent Filter知识点总结1. 显式调用和隐式调用1.1 显示调用1.2 隐式调用1.2.1 关于android.intent.category.DEFAULT1.2.2系统自带的一些隐式调用的Activity1.2.3 为什么需要隐式调用Activity,隐式调用Activity的应用场景2. Intent Filter参考材料 1. 显式调用和隐式调用 Activity的启动分为两种,显示调用和隐式调用。不过在绝大部分的情况下,我们一般都是使用显示调

wodongx123的博客 2208

android--显式跳转和隐式跳转

区别如下: 显式启动Activity指的是在Intent内部直接声明要启动的activity所对应的class。 隐式启动Activity的intent到底发给哪个activity,需要进行三个匹配,一个是action, 一个是category,一个是data,可以是全部或部分匹配,同样适用于Service和BroadcastReceiver。 A:显式启动

超宇的博客 1万+

Android Intent详解:显式与隐式对比

Intent可以理解为一个「消息载体」,用于在 Android 的四大组件(Activity、Service、BroadcastReceiver、ContentProvider)之间传递请求或数据。

m0_74296492的博客 970

显式启动activity与隐式启动activity

显式启动activity 直接在Intent中指定目标Activity.class,该activity必需在本应用中 Intent itet = new Intent(MainActivity.this,MyAty.class); startActivity(itet); 即使在acitvity中写了intent-filer但是忽略掉intent-filer中的内容

学习笔记 1915

android 隐式启动服务,安卓Activity隐式启动全面解析

前言安卓有两种方式启动Activity,一种是显示启动,另外一种是隐式启动。显示启动我们在项目中经常用到,大家也都比较熟悉。今天我们主要讲解一下隐式启动。隐式启动常用于不同应用之间的跳转(例如打开支付宝微信的支付页面),也可用于H5与native之间的交互。隐式启动就是action,category和data的匹配,我们先来说下匹配的规则,然后通过具体的例子去验证。匹配规则action的匹配规则a...

weixin_39610956的博客 1970
上一篇: Android组件 Activity隐藏标题栏和标题栏
下一篇: Adnroid组件 Activity数据传递/DialogActivity使用
3Blue1Red
博客等级 码龄7年 7粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值