对于演示应用程序,我正在使用自定义 Android 主屏幕。主屏幕需要有 2 个变体,因为它将安装在不同的 DEMO 设备上。我不想创建多个 APK 安装,而只是重复使用相同的 apk。
我的 AndroidManifest.xml 定义了 2 个主屏幕活动:
<application android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
<activity android:name=".Homescreen_"
android:label="@string/app_name"
android:screenOrientation="landscape"
>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".map.HomescreenMap_"
android:label="@string/app_name_map"
android:screenOrientation="landscape"
>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
所以问题是当我在设备上按 Home 并选择另一个主屏幕时,它不会改变 VIEW。但是,在日志中我可以看到另一个主屏幕 Activity 确实正在启动。
在 Android 日志中,我可以看到另一个主屏幕正在启动:
10-08 12:09:40.014: INFO/ActivityManager(146): START {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=android/com.android.internal.app.ResolverActivity u=0} from pid 146
10-08 12:09:40.444: INFO/ActivityManager(146): Displayed android/com.android.internal.app.ResolverActivity: +401ms
10-08 12:09:41.824: INFO/ActivityManager(146): START {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x13200000 cmp=com.company/.map.HomescreenMap_ u=0} from pid 146
但是不会显示 UI,也不会显示我在 onStart 方法中放入的任何消息。
一旦我从标准启动器应用程序抽屉打开主屏幕,它就可以工作了。这些活动不会相互继承,我也尝试过。