在一个Android应用中,主要是由四种组件组成的,这四种组件可参考“Android应用的构成”。
而这四种组件是独立的,它们之间可以互相调用,协调工作,最终组成一个真正的Android应用。

在这些组件之间的通讯中,主要是由Intent协助完成的。
Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。
因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦

什么时候加上android.intent.category.DEFAULT和LAUNCHER
1、要弄清楚这个问题,首先需要弄明白什么是implicit(隐藏) intent什么是explicit(明确) intent。

Explicit Intent明确的指定了要启动的Acitivity ,比如以下Java代码:
Intent intent= new Intent(this, B.class)
Implicit Intent没有明确的指定要启动哪个Activity ,而是通过设置一些Intent Filter来让系统去筛选合适的Acitivity去启动。
2、intent到底发给哪个activity,需要进行三个匹配,一个是action,一个是category,一个是data。理论上来说,如果intent不指定category,那么无论intent filter的内容是什么都应该是匹配的。但是,如果是implicit intent,android默认给加上一个CATEGORY_DEFAULT,这样的话如果intent filter中没有android.intent.category.DEFAULT这个category的话,匹配测试就会失败。所以,如果你的 activity支持接收implicit intent的话就一定要在intent filter中加入android.intent.category.DEFAULT。
例外情况是:android.intent.category.MAIN和android.intent.category.LAUNCHER的filter中没有必要加入android.intent.category.DEFAULT,当然加入也没有问题。
我们定义的activity如果接受implicit intent的话,intent filer就一定要加上android.intent.category.DEFAULT这个category。
3、android.intent.category.LAUNCHER 具体有什么作用?我在xml里面加和不加 感觉没什么区别啊。
一个应用程序可以有多个Activity,每个Activity是同级别的,那么在启动程序时,最先启动哪个Activity呢?有些程序可能需要显示在程序列表里,有些不需要。怎么定义呢?android.intent.action.MAIN决定应用程序最先启动的Activity android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里
因为你的程序可能有很多个activity
只要xml配置文件中有这么一个intent-filter,而且里面有这个launcher,那么这个activity就是点击程序时最先运行的那个activity。
现在你只有一个activity,那么加不加就没有关系了。
用于模拟器启动时设置为默认打开为的activity

更多相关文章

  1. android ctivity完美退出
  2. 在Android中嵌入C语言程序----Android(安卓)JNI详述
  3. 安居客Android项目架构演进
  4. 我的Android学习.入门小基础(一)
  5. android游戏开发适应多屏幕的问题 .
  6. 关于Android应用程序漏洞的防护措施
  7. android定时器的两种方式的部分比较
  8. 链接:NFC:NFC基础
  9. Android(安卓)中Crash时如何获取异常信息详解及实例

随机推荐

  1. android build (可参考之建立android编译
  2. Android(安卓)NavigationView 侧滑菜单
  3. 更新android studio gradle 不成功解决方
  4. android 获取短信验证码倒计时
  5. Android获取默认浏览器信息
  6. build WebRTC for android
  7. android 数据存取——SharedPreferences
  8. Android(安卓)Wear Preview - Get Starte
  9. Gradle:Basic Project
  10. Android(安卓)Studio升级3.2以后 Android