デモンストレーション アプリの場合、カスタムの Android ホームスクリーンに取り組んでいます。ホーム画面は異なる DEMO デバイスにインストールされるため、2 つのバリエーションが必要です。複数の 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>
問題は、デバイスでホームを押して他のホームスクリーンを選択しても、ビューが変更されないことです。ただし、ログでは、他のホーム画面のアクティビティが実際に開始されていることがわかります。
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 メソッドに入力したメッセージも表示されません。
標準のランチャーアプリドロワーからホームスクリーンを開くと、機能します。アクティビティは互いに継承されません。私もそれを試しました。