2016-08-22 9 views
0

時にはユーザーからの入力が必要なバックグラウンドで実行されるアンドロイドアプリ(音楽再生アプリ)があります。Androidが意図的に解雇されたときに実行していた道徳的なアプリに戻る

アプリから始まるMainActivityが起動しています。 MainActivityは音楽を演奏するコアプロセスを開始します。入力が必要であるとコアプロセスが判断すると、入力の新しいインテントが作成されます。

ホーム画面に戻り、別のアプリ(App Xと呼ぶ)を起動すると、音楽はバックグラウンドで再生し続けます。

今、あなたがApp Xにいる間、私の音楽アプリはユーザーの入力が必要です。入力アクティビティが画面上にポップアップし、ユーザは入力したいものを入力することができます。ただし、入力アクティビティが終了すると、音楽アプリのMainActivityが画面上の現在のアクティビティになります。私が欲しいのは、入力アクティビティが作成されると、スタックは似ているように見え、それは私が言うことができるものから

ので、アプリケーションXに戻って行くのです。

  • 音楽アプリケーションの入力活動
  • 私の音楽アプリのMainActivity
  • のApp X

しかし、私はそれになりたい:

  • 音楽アプリケーションの入力活動
  • のApp X
  • 私の音楽アプリのMainActivity

私はそれをどのように達成することができますか?

編集:

私はにリンクされている@marmor記事を読んで、私はsingleTopが正しい選択であることはよく分かりません。記事は言う:例えば

、(; Dは 上にあるスタックは-B-C-Dである)タスクのバックスタックがルートアクティビティの上にアクティビティB、C、およびDと からなると仮定する。 Dが デフォルトの「標準」起動モードを持つ場合、クラスの新しいインスタンスは が起動し、スタックはA-B-C-D-Dになります。しかし、Dの起動モード が "singleTop"の場合、Dの既存のインスタンスは onNewIntent()によってインテントを受け取ります。これはスタックの最上部にあるため、スタックは A-B-C-Dのままです。

実際には、inputActivityの複数のインスタンスを重ね合わせる必要があります。したがって、主なアクティビティがAで、inputActivityがBで、3つの入力イベントが発生した場合、ユーザーはそれらに応答せずにスタックをA-B-B-Bにする必要があります。これを防止するようなsingleTopサウンド。

これは、最後の入力イベントが発生したときにアプリケーションがフォアグラウンドにあったと仮定しています。 AppXがフォアグラウンドにあった場合、フォアグラウンドに最後に入ってから開始された入力アクティビティの下に、スタック内にあるはずです。または、アプリの主なアクティビティとすべての入力アクティビティの間にあるかもしれません。

例:

A-(APPX)-BBB

または

ABB-(APPX)-B

+0

**コアプロセス**が意味するものがAndroidサービスの場合は、おそらく 'getActivity()。finish();'を使うだけで、Androidは自動的にApp Xに戻ります。サービスは、アプリケーションがシャットダウンされても、バックグラウンドでサービスを継続します。 –

答えて

0

ご入力-活動とあなたの主な活動は座っているためです同じTaskにあるので、入力アクティビティが終了すると、AndroidはメインアクティビティのTaskの次のアクションに戻ります。

AndroidManifest.xmlにご入力の活動に次の行を追加します。

android:launchMode="singleTop" 

例: https://developer.android.com/guide/components/tasks-and-back-stack.html

EDIT:

 <activity 
      android:name=".InputActivity" 
      android:launchMode="singleTop"> 
     </activity> 

あなたがここに活動のタスクについての詳細を読むことができます

IfあなたはInputActivity>主な活動(それはあなたのケースで可能ですかどうかはわかりません)のスタックを持つ心配し、あなたが行くことができます:

android:launchMode="singleInstance" 

ドキュメントから: "として

同じシステムが他の アクティビティーをインスタンスを保持するタスクに起動しないことを除いて、「シングルタスク」と同じです。 アクティビティは常に です。タスクの唯一のメンバーです。

+0

あなたがリンクした文書を読みました。私が読んだことから、私はsingleTopが私が望むものであるとは確信していません。上記の私の編集を参照してください。 – JoeMjr2

+0

私の編集を参照してください... – marmor

+0

さて、アンドロイド:launchMode = "singleInstance"をAndroidManifest.xmlの入力アクティビティのアクティビティタグに追加しようとしました。違いはありませんでした。入力アクティビティが終了すると、それでもAppXの代わりに私のアプリのメインアクティビティに戻ります。 – JoeMjr2

関連する問題