2011-11-03 8 views
2

私は2つの活動FirstActivityとSecondActivityを持っています。Android:アクティビティスタックからアクティビティを完全に削除するにはどうすればよいですか?

FirstActivityには、インテントフィルタMAIN、LAUNCHER、およびDEFAULTがあります。 SecondActivityは通常のアクティビティであり、AndroidManifestには他のフラグは設定されていません。

私のアプリケーションはC2DM対応で、通知を受け取るとタスクバーアイコンが表示され、クリックするとSecondActivityが開きます。通知の

到着は2つのシナリオがあります まず、通知が到着したとき私のアプリケーションはすでに実行され、第二私のアプリケーションは完全に実行されていません。

最初のシナリオでは、すべて問題ありません。通知が受信され、通知ドロップダウンからクリックされ、SecondActivityが表示されます。 SecondActivityが終了し、アプリケーションがバックグラウンドに移動します。 Recent Applicationsからアプリケーションを再開すると、MAIN、LAUNCHER、DEFAULT以降のFirstActivityが表示されます。

第2のシナリオでは、通知が受信され、通知ドロップダウンからクリックされ、SecondActivityが表示されます。 SecondActivityが終了し、アプリケーションがバックグラウンドに移動します。最近のアプリケーションからアプリケーションを再起動すると、SecondActivityが間違って表示されます。私はFirstActivityが新鮮なスタートでなければならないので表示されることを期待しています。

2番目のシナリオの後でアプリケーションを強制終了しようとしましたが、結果は同じです。FirstActivity Againから起動できるように電話機を再起動する必要がありました。

同じ問題が発生しましたか?それとも私だけですか?私の設定で何が間違っていると思いますか?

また、NoHistory = falseをSecondActivityに設定しようとしましたが、結果は同じです。

答えて

0

AndroidManifestファイルでlauchモードを "singleInstance"に設定しようとしています。 2番目のアクティビティでは、[タスクの開始時に完了]をtrueに設定します。

+0

メインアクティビティでclearTaskOnLaunchをtrueに設定すると良いでしょう。そのようにsingleInstanceを設定する必要はありません。 – Rohit

+0

私はこれをちょうど今試みましたが、役に立たなかった。 – Macchiato

0

第2のシナリオでは、私は、アプリケーションが閉じているので、アクティビティスタックが空だと思います。今、あなたはactivity2を開始しています、これがスタック内の唯一の活動であることを意味します。 onbackpressをオーバーライドし、2番目のシナリオがある場合はactivity1を開始することで、望ましいバック動作が可能になりました。

+0

実際には、第2のシナリオでは、戻るボタンが押されたときの期待結果は、SecondActivityを終了することです。しかし、ランチャーから、または最近のアプリケーションからアプリケーションを起動すると、SecondActivityが表示されます。私はFirstActivityを表示したい、私は新鮮なスタートを期待しているから。 – Macchiato

0

あなたは

intent1.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 

これは私の何回かのために働いている、既往のように設定されたフラグを使用して第二の活動を呼び出すことができます。 Android Doc

+0

私は下投票の理由を知っていますか?ダウンボッターには何らかの理由がありますか? – MKJParekh

+0

私は投票しませんでしたが、彼は「私はnoHistory = falseをSecondActivityに設定しようとしましたが、依然として結果は同じです」と答えました。 – Robert

+0

@Robert yeh man、私は質問を読んだが、これは私が常に使用する解決策ですので、答えを与えました。私はもう1つonPauseをオーバーライドし、それがバックグラウンドになるたびにfinish()を呼び出します。 – MKJParekh

1

から

読むあなたが「最近のアプリケーション」ショートカットからアプリケーションを起動し、それが最後のアクティビティを起動します。したがって、アプリケーションリストからアプリケーションを起動し、問題が解決しているかどうかを確認できます。

+0

それは全く問題ではなかったが、ありがとう、それは私の問題をすべて解決する。最近のアプリケーションリストのショートカットは、実際はSecondActivityを指しています。 – Macchiato

1

正しい動作です。「最近のアプリケーション」を使用してアプリケーションを起動すると、前回のアクティビティからポイントされます。 通常のアプリケーションリストから起動してください。

+0

ええ、それを持っています!感謝の男 – Macchiato

+0

+1情報に感謝!! – MKJParekh