If Activity manager launches the MainActivity through intent-filter
with action=main
, and category=launcher
, then which type of intent is used?
I'm confused little bit. Is it implicit intent?
If Activity manager launches the MainActivity through intent-filter
with action=main
, and category=launcher
, then which type of intent is used?
I'm confused little bit. Is it implicit intent?
意图是对要执行的操作的抽象描述。它最重要的用途是启动活动。
当用户单击应用程序图标时,android 系统会在清单文件中查找意图
action="android.intent.action.MAIN"
和
category="android.intent.category.LAUNCHER".
MAIN 动作是应用程序的主要入口点。
LAUNCHER 类别意味着它应该作为顶级应用程序出现在 Launcher 中。
Intent 只是关于意图的一条信息。意图不启动任何东西。它只是通知操作系统需要做某事(即启动应用程序)。系统寻找能够解决此意图的应用程序,启动它们并将其传递给它们的起始意图(因为您可以在其中传递部分数据)。
当用户单击启动器中的应用程序图标时,启动器应用程序会生成并向操作系统感应意图(具有要启动的所需应用程序的显式名称)。Android 创建单独的 DVM,主 Activity 类,通过调用 onCreate() 启动 acriivity 的生命周期并将 Activity 带到前台。
当用户从主屏幕选择您的应用程序图标时,系统会为您已声明为“启动器”(或“主”)活动的应用程序中的 Activity 调用onCreate()方法。这是作为应用程序用户界面主要入口点的活动。
您可以在 Android 清单文件AndroidManifest.xml中定义将哪个活动用作主要活动,该文件位于项目目录的根目录中。
您的应用程序的主要活动必须在清单中声明,并使用包含MAIN操作和 LAUNCHER 类别的意图过滤器(您可能知道)。
如果组件没有任何意图过滤器,则它只能接收显式意图。带有过滤器的组件可以接收显式和隐式意图。
因此,愿意接收隐式意图的活动必须在其意图过滤器中包含“android.intent.category.DEFAULT” 。具有“android.intent.action.MAIN”和“android.intent.category.LAUNCHER”设置的过滤器是例外。它们标记开始新任务并在启动器屏幕上显示的活动。它们可以在类别列表中包含“android.intent.category.DEFAULT”,但不是必须的。
有关更多详细信息,请参阅此链接:http: //developer.android.com/guide/components/intents-filters.html