当两个或多个活动,每个活动都有带有action的intent过滤器=android.intent.action.action\u MAIN时,这意味着什么?

当两个或多个活动,每个活动都有带有action的intent过滤器=android.intent.action.action\u MAIN时,这意味着什么?,android,android-intent,android-implicit-intent,Android,Android Intent,Android Implicit Intent,博士说这是一个切入点 示例代码: <activity android:name="org.A.A" android:theme="@style/NoTitle" android:screenOrientation="behind" android:launchMode="singleTask"> <intent-filter> <acti

博士说这是一个切入点

示例代码:

 <activity android:name="org.A.A"
            android:theme="@style/NoTitle"
            android:screenOrientation="behind"
            android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>

        <activity android:name="org.A.C"
            android:theme="@style/NoTitle"
            android:launchMode="singleTop"
            android:screenOrientation="behind">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>

        <activity android:name="org.A.B"
            android:theme="@style/NoTitle"
            android:launchMode="singleTop"
            android:screenOrientation="behind">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>

1) 那么使用android.intent.action.action\u MAIN作为父组件(父组件,我指的是活动、接收者或服务)的入口点


2) 如果是,则从何处开始,因为没有提及类别。

Android应用程序由不同的组件组成。e、 g.
活动
服务
广播接收器
内容提供者
,每个组件都可以充当应用程序的入口点

让我们以活动为例,您已经在应用程序中使用以下操作定义了一个活动

<intent-filter>
     <action android:name="com.yourapp.SOME_ACTION" />
     <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
现在会发生什么?系统将使用
com.yourapp.SOME_ACTION
操作搜索活动,如果找到活动(在当前场景中,它将是您在应用程序中使用
com.yourapp.SOME_ACTION
创建的活动),它将启动应用程序(如果尚未启动),并在应用程序中打开活动


看,现在我可以通过使用
com.yourapp.SOME\u ACTION
使用
Activity
进入你的应用程序。其他组件也会发生同样的情况。

带有主操作的活动将是应用程序的入口点。如果您有一个,那么它很好,如果不止一个,那么您可以有多个活动,通过这些活动您可以进入应用程序

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>

但若你们已经为活动提供了类别,它将为那个入口点创建启动器

       <category android:name="android.intent.category.LAUNCHER" />
    <intent-filter>
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>

假设两个活动同时具有主操作和类别作为启动器,将创建两个应用程序图标一个将有一个活动作为入口点,另一个将有另一个作为入口点

       <category android:name="android.intent.category.LAUNCHER" />
    <intent-filter>
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>


谢谢您的回答。“…每个组件都可以作为应用程序的入口点。”-这是否意味着“每个组件都可以从应用程序外部作为应用程序的入口点”?是的。没错。在您的意图过滤器示例中,我注意到您使用了category。但我的问题2)和我给出的代码在单个AndroidManifest.xml下的所有活动中没有类别,只有action_MAIN,这是因为我使用隐式意图打开活动,隐式意图需要默认类别。请仔细阅读