Launcher与普通Activity的区别

LaucherActivity的源码分析和应用(非launcher桌面应用) 一、启动初探 ”在android手机上,当我们点击桌面上的按钮启动一个应用,就能打开应用的界面。这里我们所说的桌面其实就是android系统启动后的就已经帮我们运行的第一个程序,launcher程序。 launcher程序可以理解为作为其它应用app入口管理的一个系统自带的app,正常情况下,安装一个新的应用,就会在桌面(laucher)程序中显示一个相应的图标。 上述点击桌面上的图标打开应用的过程,本质上是通过lancher应用的提供的桌面图标启动另一个app的过程,并打开了新应用的首个Activity。 阅读详情

Launcher与普通Activity的区别

分类: Android应用   692人阅读  评论(0)  收藏  举报

目录(?)[+]

1.    Intent-Filter

[java]  view plain copy
  1.  <intent-filter>  
  2.   
  3.        <action android:name="android.intent.action.MAIN" />  
  4.   
  5.        <category android:name="android.intent.category.HOME" />  
  6.   
  7.        <category android:name="android.intent.category.DEFAULT"/>  
  8.   
  9.        <category android:name="android.intent.category.MONKEY"/>  
  10.   
  11.        <category android:name="android.intent.category.LAUNCHER"/>  
  12.   
  13. </intent-filter>  
    android.intent.action.MAIN决定应用程序最先启动的Activity

    android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里

    当Intent通过startActivity被传递出后,Android系统会找到适合的activity去响应这个intent。

    与此类似,startService,sendBroadcast之后都会由Android去寻找对应的程序。

    一个Intent对象是一个信息包。它包含了要接收此Intent的组件需要的信息(例如需要的动作和动作需要的信息)和 android 系统需要的信息(要处理此Intent的组件的类别和怎样启动它)

    主要用来指明Activity,Service, Broadcast Receiver可以响应哪些隐式intents。

action

    一个字符串,代表要执行的动作。如果学过Structs2的同学应该不会陌生,所谓的action就是发送一个特定的请求,然后,由一个符合这个请求的activity响应。Intent类中定义了许多动作常量。如下:

常量

目标组件

Action

ACTION_CALL

activity

初始化一个电话呼叫

ACTION_EDIT

activity

显示用户要编辑的数据

ACTION_MAIN

activity

将该Activity作为task的第一个Activity ,没有数据输入,也没有数据返回

ACTION_SYNC

activity

在设备上同步服务器上的数据

ACTION_BATTERY_LOW

broadcast receiver

电量不足的警告

ACTION_HEADSET_PLUG

broadcast receiver

耳机插入设备,或者从设备中拔出

ACTION_SCREEN_ON

Broadcast receiver

屏幕已经点亮

ACTION_TIMEZONE_CHANGED

Broadcast receiver

时区设置改变

category

    一个字符串, 包含了处理该Intent的组件的种类信息, 起着对action的补充说明作用。

    一个Intent对象可以有任意多个 category。和action 一样, 在Intent class 中也定义了几个 category 常量。。 如下:

Constant

Meaning

CATEGORY_BROWSABLE

目标Activity可以使用浏览器显示数据

CATEGORY_GADGET

The activity can be embedded inside of another activity that hosts gadgets.

该activity可以被包含在另外一个装载小工具的activity中.

CATEGORY_HOME

The activity displays the home screen, the first screen the user sees when the device is turned on or when the HOME key is pressed.

CATEGORY_LAUNCHER

可以让一个activity出现在launcher

CATEGORY_PREFERENCE

该activity是一个选项面板

CATEGORY_DEAULT

该activity是否可以接收到隐式Intents。说明除了程序入口点的filter不需要包含DEFAULT之外,其余所有的activity都要包含DEFAULT;因为如果那些activity不包含DEFAULT,将无法接收到主Activity的任何调用命令。 如SecondActivity中必须包含包名和DEFAULT的category.

注意
A.任何一个需要隐式启动的Activity都必须要有这项:
category android:name="android.intent.category.DEFAULT"
例外情况是:
android.intent.category.MAIN和android.intent.category.LAUNCHER的filter中没有必要加入android.intent.category.DEFAULT,当然加入也没有问题
B. 当匹配不上任何Activity的话,会发生异常,跳出对话框:很抱歉...某某应用程序意外停止,请重试。
 

2.    普通的Activity

[java]  view plain copy
  1. <span style="font-size:18px;"> </span><intent-filter>  
  2.   
  3. <!-- The MAIN action describes a main entrypoint into an  
  4.   
  5.                      activity, without anyassociated data. -->  
  6.   
  7. <actionandroid:name="android.intent.action.MAIN" />  
  8.   
  9.    
  10.   
  11. <!-- This places this activity into the main app list. -->  
  12.   
  13. <categoryandroid:name="android.intent.category.LAUNCHER" />  
  14.   
  15. </intent-filter>  


    其中的MAIN表示这是该应用启动的第一个Activity, 而LAUNCHER表示此应用将被加载到Launcher的应用程序列表中. 

3.   Launcher的特殊处

Launcher的intent-filter是这样的,

[java]  view plain copy
  1. <action android:name="android.intent.action.MAIN"/>  
  2.   
  3. <categoryandroid:name="android.intent.category.HOME"/>  
  4.   
  5. <categoryandroid:name="android.intent.category.DEFAULT"/>  
  6.   
  7. <categoryandroid:name="android.intent.category.MONKEY"/>  
    这个Activity是系统启动后要执行的第一个Activity. 在你的Activity的AndroidManifest.xml中加入这几个过滤条件, 你的应用就能取代Launcher的位置了.

    HOME表示该Activity可以作为Launcher, 即系统的第一个应用. 

4. Launcher在系统中的调用过程



 

 

 

 

android自定义桌面应用 这篇文章主要讲下自定义桌面应用.效果主要是调用packageManager来获取当前所有的程序,并在自定义桌面程序中展示,并支持跳转. 阅读详情

相关推荐

深入解析Apk安装后桌面图标缺失的CATEGORY_LAUNCHER与LEANBACK_LAUNCHER机制

本文深入解析了Android应用中Apk安装后桌面图标缺失的问题,重点探讨了CATEGORY_LAUNCHER与LEANBACK_LAUNCHER机制的区别。通过分析Intent过滤器的工作原理和TV应用的特殊性,提供了双平台兼容的实现方案和调试技巧,帮助开发者解决图标显示问题。

weixin_29264201的博客 506

android.intent.category.LAUNCHER

android.intent.action.MAIN决定应用程序最先启动的Activity android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里。 android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里 因为你的程序可能有很多个activity 只要xml配置文件中有这么一个intent-filter,而且里面有这个launcher,那么这个activity就是点击程序时最先运行的那个activity。 m..

谁人打的太极拳的博客 5454

Android Launcher研究(二)-----------Launcher为何物,究竟是干什么的?

在上一节,我讲了如何下载Launcher的教程,今天这一节,我将重点讲一下什么Launcher,究竟它是什么神秘东东?Launcher俗称HomeScreen,也就是我们启动Android手机,第一眼看到的应用程序,而这个应用程序是比较特殊而且任务艰巨的。它负责了我们除了应用本身操作以外的所有操作,它负责了我们有几个桌面,点击应用图标启动应用程序,长时间按桌面出现上下文菜单,长时间按桌

Android_Tutor的专栏 9万+

对于android.intent.action.MAIN和android.intent.category.LAUNCHER的理解

当我们使用Android Studio创建一个工程并生成一个Activity时,经常可以在清单文件中看到如下的代码: <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /

Lindroid的博客 4万+

Android M Launcher3主流程源码浅析

当存在多个时无论哪种触发都会弹出选择框进行选择设置。可以发现,Launcher3的Activity加载其实和其他应用没啥区别的,也是一样的流程,只是我们需要特别注意上图中红色的两步。在setContentView之后我们其实又进行了一次依据设备属性的layout操作,接着才进行异步数据加载的,所以我们的重点会放在LauncherModel的loader方法中。可以发现,其实Launcher没啥特殊的,只是考虑的问题比较多而已,本文只是给出主流程,细节还需自己继续扣,略显潦草,没办法,没时间,只能这样。

2401_89173673的博客 747

「深入解析 Android Launcher 开发」- 编程探索

Android Launcher 是用户与操作系统交互的主要界面之一。它不仅仅是一个应用程序列表,还允许用户定制主屏幕布局、添加小部件、更换壁纸等。为了开发一个功能强大且具有吸引力的 Launcher,我们需要理解其主要组成部分以及相应的编程技术。本文深入探讨了 Android Launcher 的开发过程,包括主要组件和实现功能的示例代码。通过理解 Android Launcher 的设计原理和关键组件,开发者可以创建出功能丰富、用户友好的 Launcher 应用程序。

ByteNinja的博客 746

重温四大组件(三)—Activity的启动过程

前言 重温四大组件第四篇,这里分析一下Activity的启动过程。Activity的启动过程分为两种,一种是根Activity的启动,另外一种是普通Activity的启动过程。根Activity也就是默认启动的Activity(在AndroidMinifest.xml配置的启动Activity)。普通Activity指的是除根Activity的其他Activity。其中根Activity和普通Ac...

码小二的博客 267

深入解析EXI协议在ISO15118-2命令测试中的编解码实践

本文深入探讨了EXI协议在ISO15118-2车桩通信标准中的关键作用与实践方法。EXI编解码测试是确保通信准确性与效率的核心环节,文章详细介绍了从搭建测试环境、选择工具库到编写完整测试代码的全过程,并分析了结果差异的常见原因与调试技巧,为电动汽车充电系统的开发者提供了实用的技术指南。

potato的博客 1048

as笔记4(从empty actvity的代码书写开始)

今天我开始写activity的代码了,依旧是以那本书和“单刷”为指导 然后发现as在empty activity的创建时出现两个选项,右边的是“向后兼容”,左边是launcher activity选项。 至于这个launcher activity是什么我现在还不知道,不过还是先把资料放上了。以后方便查询。 Launcher与普通Activity的区别 http://blog

VeeChan723的博客 479

用Origin快速拟合荧光寿命、PL Decay (TRPL)数据分析处理

用Origin快速拟合荧光寿命、PL Decay (TRPL)数据分析处理

A20802013的博客 2万+

android 14.0 控制wifi启用禁用功能实现

在14.0的产品rom定制化开发中,在产品开发中,对于功能的开发的功能也是挺多的,而在对于wifi的功能定制需求,有要求需要通过系统属性来控制wifi开关是否可以打开 来控制是否可以连接wifi,打开控制wifi的功能,接下来分析wifi的开启流程来实现该功能的实现

安卓兼职framework和app工程师的博客 1771

activity 生命周期_Activity 源码解析

Android 应用程序启动过程Activity启动过程可以分为两种:一种是根activity的启动过程,另一种是普通activity启动过程。根activity指的是应用程序启动的第一个activity,因此也可以理解为应用程序的启动过程。普通activity除根activity以外的其他activity。 - 根activity启动涉及4个进程:Zygote进程,Launcher进程、AMS所...

weixin_39716043的博客 201

大厂面经:大疆嵌入式面试题及参考答案(4万字长文:持续更新)

目录 Linux 系统调用的过程,中间发生了什么? 表格总结 Linux 中断流程,谈谈你对中断上下文的理解 中断流程 中断上下文理解 Linuxschedule()函数的原理和调用的时机 schedule()函数原理 调用时机 页表实现机制,分页的缺点? 页表机制 分页的缺点 介绍操作系统的多级反馈调度策略,时间片轮转,在项目中如何指定优先级来调度进程完成快速响应(nice命令) 多级反馈队列调度 时间片轮转 使用nice命令 聊内存分配,进程内存分配,段页式存

大模型大数据攻城狮的专栏 4169

LaunchActivity\StartActivity详细时序图

LaunchActivity:通过Launcher启动一个新的MainActivity,一个新的应用程序。参考学习文档 Android应用程序启动过程源代码分析。 StartActivity:应用程序内启动一个普通平常的SubActivity,在同一个task,同一个process中。参考学习文档 Android应用程序内部启动Activity过程(startActivity)的源代码分析...

weixin_34060299的博客 453

UNet改进(12):融合小波变换与注意力机制的图像分割新方法

本文提出了一种改进的WaveletAttentionUNet架构,通过结合小波变换和注意力机制来增强传统UNet的多尺度特征提取能力。该网络使用分组卷积模拟小波分解,将输入通道扩展为4个子带(LL、LH、HL、HH),并通过通道注意力机制自适应加权各子带特征。网络保留了UNet的编码器-解码器结构,在关键位置集成了WaveletAttention模块。实验证明该方法在医学图像分割等任务中能更好地保持边缘细节和复杂纹理特征,同时保持计算效率。

2501_91516851的博客 758

探索如何利用CST和ADS进行DDR的SIPI联合仿真

本文系统介绍了CST和ADS两款工具进行DDR信号完整性/电源完整性(SI/PI)联合仿真的方法。CST采用工作室协同方式,通过PCB布局导入、材料设置、模型分配等步骤,重点分析了电源阻抗优化和信号波形质量。ADS则利用SIPro、PIPro等专用工具,突出系统级验证和自动化优化功能。两者各有优势:CST擅长3D结构精确建模,ADS更适于快速系统验证。文章建议可根据项目需求混合使用两种工具,并提供了模型简化、频带选择等实用技巧。通过对比分析,为工程师选择仿真工具提供了决策参考。

一只豌豆象的博客 1150

Launcher 启动 Activity源码解析

当我们创建一个app时候,通常都会在 application 中注册一个activity,如下 xml注册文件中 <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.act...

zhouxing的博客 783

C#上位机多PLC多协议开发思路:10年老工控师拆解实战方案,避坑90%的问题(附代码框架)

是否连接成功数据地址(如“DB1.DBW0”“D100”“4x0001”)

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 950

将某一普通应用设为桌面(launcher)的方法

launcher和普通应用的区别是多了下面两行蓝字 <activity android:name="com.mstar.tvsettings.ui.root.RootActivity" android:configChanges="orientation|keyboardHidden|screenSize"

w6028819321的专栏 5097

从生产订单到整车交付,SAP 离散制造在汽车行业里的真实落点

汽车行业谈数字化,很容易一上来就谈智能工厂、数字孪生、AI 排产、无人仓、视觉质检。可落到 SAP 项目现场,真正把工厂撑起来的,往往还是几个很朴素的问题,客户订单来了以后,BOM 能不能准确展开,物料能不能准时到线,产能有没有被过度承诺,生产订单能不能被车间正确执行,质量问题能不能追溯,成本能不能按工单和批次沉淀下来。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 113

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【Android 性能优化】应用启动优化 ( 安卓应用启动分析 | Launcher 应用启用普通安卓应用 | 应用进程分析 )

一、 Launcher 应用 startActivitySafely 方法分析、 二、 Launcher 中的 startActivity(View v, Intent intent, Object tag) 方法分析、 三、 Android 应用进程分析

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1106

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: 为Cocos2d-x的Android平台添加Protobuffer支持
下一篇: android 开发时出现 Please ensure that adb is correctly located at '...\adb.exe' and can be executed
linuxheik
博客等级 码龄15年 865粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值