AndroidManifest.xml 中单独包含intent.category.HOME 与同时包含intent.category.DEFAULT 之间的区别

Den*_*dic 5 android android-manifest android-intent

两者有什么区别:

 <intent-filter>
     <action android:name="android.intent.action.MAIN" />
     <category android:name="android.intent.category.HOME"/>
 </intent-filter>
Run Code Online (Sandbox Code Playgroud)

和:

 <intent-filter>
     <action android:name="android.intent.action.MAIN" />
     <category android:name="android.intent.category.HOME"/>
     <category android:name="android.intent.category.DEFAULT"/>
 </intent-filter>
Run Code Online (Sandbox Code Playgroud)

Arj*_*ini 1

在这里查看答案

android.intent.action.MAIN 的含义是什么?

android.intent.action.MAIN意味着这个activity是应用程序的入口点,即当你启动应用程序时,这个activity就被创建了。

来自文档

ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.
Run Code Online (Sandbox Code Playgroud)

另外,从这里开始

Activity Action Start 作为主入口点,不期望接收数据。

android.intent.category.DEFAULT主要用于隐式意图。如果您的活动希望通过隐式意图启动,则应在其过滤器中包含此类别。如果您的 Activity 在没有分配特定类别时可能由隐式 Intent 启动,则其 Intent 过滤器应包含此类别。

请参阅文档..

  1. http://developer.android.com/reference/android/content/Intent.html
  2. http://developer.android.com/guide/topics/manifest/action-element.html

以及 @CommonsWare 的另一种观点......在那个答案中也......看到它

因此,这ACTION_MAIN被认为是应用程序的入口点。

通常,它与CATEGORY_LAUNCHERin组合<intent-filter>以指示应出现在主屏幕启动器或任何其他自认为是启动器的活动中。此类“启动器”可以查询PackageManager、使用queryIntentActivities()、 来查找此类活动并将其显示给用户。

但是,ACTION_MAIN可以与其他类别组合用于其他特殊目的。例如,CATEGORY_CAR_DOCKwithACTION_MAIN表示当用户将手机放入制造商提供的汽车底座时,应将其视为要显示的候选活动。

当 an 与Intent一起使用时startActivity(),如果Intent尚未放入类别中,则将其放入 中CATEGORY_DEFAULT。因此, an<activity> <intent-filter>需要指定some <category>,如果没有别的的话使用<category android:name="android.intent.category.DEFAULT" />