在清单文件中,给另一个Activity添加如下内容,设置为桌面启动入口
1 2 3 4
| <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter>
|
清单文件中如下所示,两个Activity都存在上面intent-filter以及其中的内容,安装后将会在桌面显示两个应用图标
现在启动两个桌面图标会进入同一个Activity,先注册哪个Activity为启动入口,两个图标启动后都会进入这个Activity
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <application android:allowBackup="true" android:label="@string/app_name" android:icon="@drawable/app_icon" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:exported="true" > <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity>
<activity android:label="@string/app_name2" android:icon="@drawable/app_icon2" android:name=".SplashActivity" android:exported="true" > <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application>
|
将其中一个Activity设置为默认启动页面,此时将无视Activity注册启动入口的先后顺序,两个图标启动后都会进入这个Activity
1 2 3 4 5 6
| <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter>
|
如果给另一个Activity也设置为默认启动页面,那么又将以注册启动入口的先后顺序来决桌面图标启动进入的页面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| <application android:allowBackup="true" android:label="@string/app_name" android:icon="@drawable/app_icon" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:exported="true" > <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity>
<activity android:label="@string/app_name2" android:icon="@drawable/app_icon2" android:name=".SplashActivity" android:exported="true" > <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application>
|
若要使两个启动图标打开不同的启动页面,需要给两个Activity定义不同的process属性,使两个Activity运行在不同的进程中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| <application android:allowBackup="true" android:label="@string/app_name" android:icon="@drawable/app_icon" android:theme="@style/AppTheme">
<activity android:name=".MainActivity" android:process=":process.main" android:exported="true" > <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity>
<activity android:label="@string/app_name2" android:icon="@drawable/app_icon2" android:name=".SplashActivity" android:process=":process.splash" android:exported="true" > <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application>
|
为Activity指定process属性后,还要为其指定单例运行模式,将launchMode设置为singleInstance
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| <application android:allowBackup="true" android:label="@string/app_name" android:icon="@drawable/app_icon" android:theme="@style/AppTheme">
<activity android:name=".MainActivity" android:process=":process.main" android:launchMode="singleInstance" android:exported="true" > <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity>
<activity android:label="@string/app_name2" android:icon="@drawable/app_icon2" android:name=".SplashActivity" android:process=":process.splash" android:launchMode="singleInstance" android:exported="true" > <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application>
|
全部设置完毕后,此时该应用的两个图标将进入两个不同的Activity
需要注意的是,多个进程会创建多个Application对象,执行多次OnCreate方法