Android学习 - android.intent.action.MAIN与android.intent.category.LAUNCHER理解

先看看网路上的说法:

android.intent.action.MAIN决定应用程序最先启动的Activity

android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里

通过实验后,发现MAIN与LAUNCHER并不是单纯的各管各的事情;我测试的结果是,如果一个应用没有LAUNCHER则该apk仍能安装到设备上,但是在桌面中图标中看不到。如果给那个Activity设定了LAUNCHER,且同时设定了Main,则这个Activity就可出现在程序图标中;如果没有Main,则不知启动哪个Activity,故也不会有图标出现。可见,Main指的是点击图标后启动哪个Activity。当然Main可以给多个Activity设定,但只设定Main不设定LAUNCHER,仍然无法进入activity。

可见Main和LAUNCHER同时设定才有意义,如果多个activity同时设定,则会出现两个图标,分别先进入不同的activity。如下图:Lift_cycles01与Lift_cycles 02

<activity android:name=".Life_CyclesActivity"
          android:label="Lift_cycles 01">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<activity android:name="Life_CyclesActivity02"
          android:label="Lift_cycles 02">
     <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
</activity>

网上查了android.intent.action.MAIN的用法,有的说只能有一个,有的说有多个的话启动程序的时候会提示选择Activity,于是自己试验了一下,发现是默认启动第一个。

android.intent.action.MAIN标记了启动Application时先启动那个Activity,若有多个android.intent.action.MAIN,则先启动mainfest里面第一个出现的android.intent.action.MAIN

<activity
            android:name=".Activity01"
            android:label="@string/title_activity_activity01" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="Activity02"
            android:label="@string/title_activity_activity02">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

上例运行结果为启动activity01;

<activity
            android:name="Activity02"
            android:label="@string/title_activity_activity02">
            <intent-filter>
                <action android:name="android.intent.action.ALL_APPS" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
<activity
            android:name=".Activity01"
            android:label="@string/title_activity_activity01" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

上例运行结果为启动activity02;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值