3

次の手順:

  1. 私のアプリケーション、スタックを開始します: [HomeActivity]
  2. Facebook にアクセスし、ディープ リンクを使用してアクティビティ X にアクセスします
  3. 戻るボタンを押すと、Facebook ではなくHomeActivityに戻る

期待される

  1. 私のアプリケーション、スタックを開始します: [HomeActivity]
  2. Facebook にアクセスし、ディープ リンクを使用してアクティビティ X にアクセスします
  3. 戻るボタンを押すと、Facebook アプリに戻ります

アプリケーションが事前にまったく開始されていない場合、期待される動作が得られます。Instagram などの他のアプリでは、これが適切に機能しているように見えます。したがって、アプリケーションがバックグラウンドで実行されている場合でも、ディープリンク インテントを発行したアクティビティに戻ります。

私のアクティビティにはがありlaunchMode="singleTop"onBackPressed()オーバーライドされていないため、スーパー クラスの実装を呼び出します。

これを正しく行うために、ここで何が欠けていますか?

私はそれをデバッグし、onBackPressed()最終的に を呼び出しfinish()ましたが、Facebook ではなく自分のアプリケーションに戻りました。

4

2 に答える 2

0

その理由は、Facebookの立ち上げが新しいタスクを開始するためです。[戻る] は、常にタスク内のアクティビティ スタックを上に移動します。

Facebook を起動するインテントを制御できる場合、アクティビティが起動されるタスクを制御するフラグがあります。デフォルトでは、同じタスク内で起動します。

Intent.FLAG_ACTIVITY_NEW_TASK がシステムによって意図的に追加されていると思われるため、これは設計によるものである可能性があります(意図したとおりに動作します)。

PS: このプレゼンテーションでは、Android のアクティビティとタスクについて知っておく必要があるすべてのことを説明します: http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack

于 2015-02-04T13:02:11.537 に答える