私のアプリには、ActivityA と ActivityB の 2 つのアクティビティがあります。それらは以下の AndroidManifest で指定されています。
<activity android:name=".ActivityA" android:label="@string/app_name" android:screenOrientation="landscape"
android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ActivityB"
android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden|screenSize"
android:windowSoftInputMode="stateAlwaysHidden"/>
問題のシナリオは次のとおりです。
- アプリを起動すると、ActivityA が表示されます。
- ActivityA から、ActivityB を開始し、ActivityA を閉じます。これで、タスク スタックには ActivityB のみが含まれるようになりました。
- ホームボタンを押すと、電話がホーム画面に移動します。
- ホームボタンを長押しして、履歴からアプリを選択します。
- 手順 4 の後、ActivityA が開始して表示され、タスク スタックの上部に ActivityA が、下部に ActivityB が含まれます。
ステップ 5 で非常に混乱しています。私が予想していたのは、アプリが既存のタスク スタック、つまりタスク スタック内の ActivityB のみを使用してフォアグラウンドに移動することです。Android がステップ 5 で ActivityA を開始するのはなぜですか?
ところで、クライアント ログには、ステップ 5 で以下のメッセージが含まれています。
10-26 21:29:04.070 V/HtcAppUsageStats( 275): (アプリ、パッケージを起動): (MyApp、com.example.myapp)
10-26 21:29:04.070 I/ActivityManager( 275): アクティビティの開始: 意図 { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x34500000 cmp=com.example.myapp /.ActivityA bnds=[0,566][540,662] (エキストラあり) } from pid 275
ご提案ありがとうございます。