我有四项活动,分别命名为第一,第二,第三和第四项活动。我知道Manifest是非常重要的文件,并且充当应用程序的根。我需要的是,当我运行整个应用程序时,它应该首先显示第三个活动(即指令活动),而不是显示第一个活动(即登录活动)。
因此,所有这四个活动都是在Manifest文件中创建的。那么现在,Manifest如何识别应首先启动哪些活动,以及它如何重视第一个首先启动的活动(指令活动)而不是其他活动?
然后,我还必须知道多个活动何时可能有多个启动器的概念,那么此Intent过滤器如何通过指定活动侦听的消息来执行过滤?顺便说一下,当涉及到多个活动时,意图过滤器和启动器如何发挥作用?
答案 0 :(得分:2)
Activity
中的每个BroadcastReceiver
,Service
和AndroidManifest.xml
都有一个Intent Filter,用于指定它与Android环境的互动方式。例如, BroadcastReceivers 可以指定它正在侦听的广播事件。
活动可以指定在主屏幕中看到它们的方式,或者可以在应用程序中打开哪些文件扩展名。某些应用没有活动或 Intent Filters - 只需使用服务和 BroadcastReceivers 。如果应用确实使用了一个或多个活动,开发人员可以选择添加 Intent Filter - 但这不是必需的。如果用户想要为用户提供启动器以便能够打开应用程序,则他或她必须使用此 Intent过滤器:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
这将创建一个启动器,其中包含应用程序图标(如果被android:icon
属性覆盖,则为活动图标)和活动名称(由android:label
属性指定)。例如,我可以有一个这样的清单:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_title" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".OtherActivity"
android:label="@string/other_title"
android:icon="@drawable/ic_other_launcher" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
此清单表明有两个启动器活动 - MainActivity
和OtherActivity
。他们有不同的图标和不同的名称。它们也是完全独立的活动 - 因此每个人都必须处理接收新的意图,就像处理任何其他活动一样。
因此,要回答您的问题 - 不一定是主要或第一个活动,并且可能有多个主要或第一个活动。
另请注意,可以配置第一个活动来更改活动 launch mode。默认情况下,每个新启动的 Activity 都是同一个应用程序的新实例 - 并且将具有以活动为基础的单独后备堆栈,这些后备堆栈首先通过 Intent Filter打开
答案 1 :(得分:0)
In side Manifest File Mention these line inside activity for launching this activity as launcher activity
<activity
android:name="com.example.themap.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
答案 2 :(得分:0)
主要活动包含这些过滤器,具体取决于这些过滤器主要活动将在第一时间启动,
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
这些过滤器只应声明一个活动(即MainActivity)。如果您想首先展示任何其他活动,您需要在MainActivity中保留一些条件,并根据它调用这些活动。
答案 3 :(得分:0)
有一个带有操作项的intent-filter,用于说明
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
是什么使它成为默认活动!
编辑:
可以有多个具有相同intent过滤器的活动,每个活动都会给出一个带有与该活动相关联的图标的新图标。单击该图标将首先打开其各自的活动。