Android4.4のSO-03F で、起動履歴からの起動時に、想定していないActivityで起動されてしまい、困っています。
前提として、このアプリは、以下のActivityを使用します。
- アクティビティA 起動時のログインチェック用
- アクティビティB ログイン画面
- アクティビティC メイン画面
アプリをインストール後、起動すると、アクティビティAを最初に起動します。
自動的にログイン状態を確認し、アクティビティBかCに遷移します。
アクティビティCは、ログアウト機能を持ち、ログアウトするとアクティビティBのログイン画面へ遷移します。
また、このアプリは、通知アイコンの表示機能を持ちます。通知アイコンをタップすると、アクティビティAを起動し、ログイン状態を判断した後にアクティビティBかCに遷移します。
上記の前提で、以下の動作を行いました。
1.インストール後、起動します。アクティビティAを経由して、アクティビティBを表示します。
2.アクティビティBでログインし、アクティビティCへ遷移します。
3.アプリをバックグラウンドへ隠します。(この時はホームボタンを押しました)
4.通知アイコンをタップします。アクティビティAを経由して、アクティビティCを表示します。(ログイン後であるため)
5.ログアウトの処理を行います。アクティビティBのログイン画面へ遷移します。
6.アプリをバックグラウンドへ隠します。
7.起動履歴から、このアプリを選択します。
8.なぜかアクティビティCが起動します。
疑問なのは、手順8でアクティビティCが起動してしまう理由です。
AndroidManifestにも、最初にアクティビティAを起動するように、<action android:name="android.intent.action.MAIN" /> を設定しました。
にもかかわらず、起動履歴から選択すると、アクティビティCが起動してしまいます。
起動履歴は、どのように起動するアクティビティを選択しているのでしょうか?
なお、AndroidManifest.xmlでの定義ですが、以下の通りです。
アクティビティの定義ですが、以下の通りです。
lang
1<activity 2 android:name=".activity.ActivityA" 3 android:screenOrientation="portrait" 4 android:label="@string/app_name" 5 android:launchMode="singleTask" 6 android:noHistory="true" 7 > 8 <intent-filter> 9 <action android:name="android.intent.action.MAIN" /> 10 <category android:name="android.intent.category.LAUNCHER" /> 11 </intent-filter> 12</activity> 13<activity 14 android:name=".activity.ActivityB" 15 android:screenOrientation="portrait" 16 android:label="@string/app_name" 17 android:launchMode="singleTask" 18 android:noHistory="true" 19 > 20</activity> 21<activity 22 android:name=".activity.ActivityC" 23 android:screenOrientation="portrait" 24 android:label="@string/app_name" 25 android:launchMode="singleTask" 26 > 27</activity>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。