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

告别迷茫!手把手教你用ArcGIS+GTB搞定生态源地MSPA分析(附避坑指南)

本文详细介绍了如何使用ArcGIS和GTB进行生态源地MSPA分析的全流程,包括软件安装、数据预处理、参数设置、结果可视化和常见问题排查。特别针对ArcGIS和GTB组合使用时的常见问题提供了避坑指南,帮助研究者高效完成生态规划任务。

weixin_30756499的博客 434

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

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

VeeChan723的博客 479

hi3519dv500 os04a10输入调试

因该sensor接在soc端的iic6,在驱动中(Hi3519DV500_SDK_V2.0.1.1\smp\a55_linux\source\mpp\cbb\isp\user\sensor\hi3519dv500\omnivision_os04a10\os04a10_sensor_ctl.c)注意总线的选择。mem_process_isolation=1 改为 mem_process_isolation=0。2、OT_MIPI_SET_HS_MODE配置为LANE_DIVIDE_MODE_1。

linus 3165

告别配置迷茫:手把手教你用Vivado 2023.1配置Xilinx FPGA的DDR4 MIG IP核(含AXI接口详解)

本文详细介绍了如何在Vivado 2023.1中配置Xilinx FPGA的DDR4 MIG IP核,包括AXI接口的深度解析与优化。通过实战案例和调试技巧,帮助工程师快速掌握DDR4内存与FPGA的协同工作,提升系统性能。特别适合需要高性能计算和实时信号处理的开发者。

weixin_29231725的博客 437

activity 生命周期_Activity 源码解析

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

weixin_39716043的博客 201

别再只看pLDDT了!AlphaFold预测结果解读保姆级指南:pLDDT、PAE、pTM、ipTM到底怎么看?

本文详细解析了AlphaFold预测结果中的关键指标pLDDT、PAE、pTM和ipTM,帮助用户从单一依赖pLDDT进阶到全面理解蛋白质结构预测。通过实际案例和技巧,指导如何正确解读这些指标,避免常见错误,并提供了从预测到发表的实用建议。

weixin_29100399的博客 355

LaunchActivity\StartActivity详细时序图

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

weixin_34060299的博客 453

自托管AI邮件助手imap-mcp:安全连接Claude与个人邮箱的完整指南

在AI助手日益普及的今天,如何安全地让AI访问个人邮箱数据成为关键挑战。传统方法如直接暴露IMAP/SMTP凭证存在严重安全隐患,而第三方SaaS服务则涉及隐私泄露风险。Model Context Protocol (MCP) 作为一种新兴的标准化协议,为AI工具安全接入提供了解决方案。其核心价值在于实现数据源与AI助手间的安全、标准化交互,特别适用于处理敏感信息的场景。imap-mcp正是基于MCP协议构建的自托管邮件网关,它通过多层安全机制(包括主密钥加密和OAuth令牌哈希化)保护用户凭证,让用户能在

weixin_28295799的博客 655

【音视频处理】MP4、FLV、HLS适用范围,在线视频播放哪个更好

本期我们讨论在线点播的视频格式,对比这些视频格式的优劣以及原因 1、封装格式的作用 2、MP4 3、FLV 4、HLS

池鱼 - YiiGaa 2万+

Launcher 启动 Activity源码解析

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

zhouxing的博客 783

基于STM32L4XX、HAL库的YT8531C-CA以太网收发器(PHY)驱动程序设计

是一款由裕太微推出的高性价比、低功耗的单端口 10/100M 以太网物理层收发器(PHY)。它通过标准的 MII(介质独立接口)或 RMII(精简介质独立接口)与微控制器的 MAC 层连接,实现将数字信号与网络模拟信号之间的转换。支持自动协商(Auto-Negotiation),自动选择最高速率和双工模式。支持 HP Auto-MDIX(自动交叉直连),无需区分直通线或交叉线。低功耗设计,特别适合电池供电或对功耗敏感的 STM32L4 应用。支持 MII 和 RMII 接口,节省引脚(RMII模式)。

zhusl6688的博客 628

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

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

w6028819321的专栏 5097

2025资源从哪里来!

研究网络通信中的安全问题,如VLAN划分、路由协议(静态、动态如OSPF、BGP)、NAT转换、AAA认证、访问控制列表(ACL)等。‌Wi-Fi安全设置‌、‌密码破解原理‌(仅用于合法测试或教育目的)、‌常见Web安全问题‌如SQL注入、XSS跨站脚本攻击等的防范措施。在这个网站你可以找到你对应的专业-对应的路线-对应的资源-对应的百度网盘里面全是免费的资源------------------惊喜不?‌防火墙配置与策略‌、‌入侵检测与防御系统(IDS/IPS)‌、‌端口扫描与漏洞扫描技术‌等。

qq_56248592的博客 1902

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

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

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

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: 为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、付费专栏及课程。

余额充值