2016-12-06 6 views
1

なぜなら、私はすべてのアクティビティを1インスタンスで作成する必要があるから、android:launchMode="singleInstance"をマニフェストに入れます。しかし、デバイス上で「ホーム」を押して再び開くと、システムはスタックをクリアし、開いていた最後のアクティビティではなくルートアクティビティを開きます。ユーザーの最後に開いたアクティビティを保持するにはどうすればよいですか?singleInstanceをマニフェストに保持しますか?アクティビティ 'スタック(アプリケーションを終了した後、launchMode = "singleInstance"の場合、システムはスタックをクリアします)

EDIT: マニフェスト

... 


    <application 
     ...>   

     <activity 
      android:name=".ui.login.LoginActivity" 
      android:launchMode="singleInstance" 
      android:screenOrientation="portrait"/> 
     <activity 
      android:name=".ui.activity.MainActivity" 
      android:label="${app_title_constant}" 
      android:launchMode="singleInstance" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 

       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
      <intent-filter> 
       <data android:scheme="${scheme}"/> 

       <action android:name="android.intent.action.VIEW"/> 

       <category android:name="android.intent.category.DEFAULT"/> 
       <category android:name="android.intent.category.BROWSABLE"/> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".ui.more.service.ScannerActivity" 
      android:screenOrientation="portrait" 
      android:theme="@style/AppTheme"/> 
     <activity 
      android:name=".ui.activity.CardsListForSendActivity" 
      android:launchMode="singleInstance" 
      android:screenOrientation="portrait"/> 

     <activity 
      android:name=".ui.activity.CountriesActivity" 
      android:launchMode="singleInstance" 
      android:screenOrientation="portrait"/> 
     <activity 
      android:name=".ui.activity.StepperCardPurchaseActivity" 
      android:launchMode="singleInstance" 
      android:screenOrientation="portrait"/> 

     <service 
      android:name=".service.CacheContactsIntentService" 
      android:exported="false"/> 
     <service 
      android:name=".managers.push.PushNotificationExtenderService" 
      android:exported="false"> 
      <intent-filter> 
       <action android:name="com.onesignal.NotificationExtender"/> 
      </intent-filter> 
     </service> 

     <receiver 
      android:name=".managers.push.PushBroadcastReceiver" 
      android:enabled="true"> 
     </receiver> 
    </application> 

</manifest> 
+0

「すべてのアクティビティを単一インスタンスで作成する必要があります」という理由はありますか?もしそうでなければ、ユーザーが期待していないものをしないでください。 –

+0

@BartFriederichsクライアントの要件に従っています。さらに、プッシュ通知にOneSignalを使用し、プッシュをタップするとMainActivityが開き、次にユーザーがMainActivityを再度参照して表示されるので、singleInstanceが必要なのは2番目の理由です – alla

+0

マニフェストを投稿します –

答えて

0

launchMode="singleInstance"を使用しないでください。これは必須ではなく、実際にはあなたのためには実際には機能しません。通常、 "singleInstance"を指定すると、それぞれのすべてのActivityが別々のタスクに起動されます。ただし、マニフェストで「taskAffinity」を指定していないため、これは発生しません。デフォルトでは、すべてのアクティビティは同じタスクアフィニティを持つため、(「singleInstance」起動モードを指定していても)すべてのアクティビティは同じタスクで終了します。

launchMode指定子をすべて削除してから、もう一度お試しください。

Androidの標準的な動作は、アプリが地点からバックグラウンドに持ち込まれたとき(HOMEボタンを押してアプリに戻ると)、ユーザーをタスクスタックに戻すことです。

関連する問題