2012-01-25 23 views
2

マルチタスク(バックグラウンドでの作業)をサポートするアプリがありますが、アンドロイドのバックスタックに問題があります。Androidのバックスタックとマルチタスクのサポート

これは私が持っているものです。

活動Aは、結果のアクティビティBを開始し、そう...

活動A - >アクティビティB

活動でのユーザーの長いプレスBの場合homeボタンを押して別のアプリケーション(たとえばブラウザなど)に切り替えてから家のボタンをもう一度押して、自分のアプリに戻ってくると、アクティビティBになりますが、今度はバックスタックが表示されますこのように:

活動A - >インターネットブラウザ - >アクティビティB

私は私の活動のBからの結果を返送するfinish()を行うときだから、私の活動Aにではなく、インターネットブラウザに戻ってきていません...

これは、ユーザーがボタンの長押しを使用していない場合も同様ですが、また戻って自分のランチャーに来てボタンを使用して、長押しを使用していますボタンを押してアプリに戻ります。この場合、バックスタックはさらに悪くなる。

ホームランチャー - >アクティビティB

私はアクティビティBにfinish()を行うときに、ユーザーが自分のホーム画面に戻って取得し、彼らが活動を取り戻すことはできませんただし、アプリの引き出しからアプリを再起動する場合は例外です。

この場合、マルチタスク作業を実装する方法はありますか?アクティビティBは、ユーザがこれら2つの間で開いたものに関係なく、常にアクティビティAに結果を戻す必要があります。

+0

スターに使うコードを表示するいくつかのフラグを間違って設定しているようです。 – kabuko

+0

問題は、フラグを設定していない可能性がありますが、どのフラグを設定するかわからないため、正しいものを指すことができます。私のコードは次のとおりです。 'Intent i = new Intent(ActivityA.this、ActivityB.class); \t i.setAction( "android.intent.action.PICK"); startActivityForResult(i、0); ' – Gix

答えて

1

OK。長い時間の研究とさまざまなことを試してみたところ、問題の解決策がここにあります。うまくいけば、これは他の人を助け...

ソリューションはAndroidManifest.xmlを

で、かなりまっすぐ進むと簡単ですが

は、この方法でのアクティビティBアクティビティB

ためandroid:noHistory="true"を設定する活動のためのandroid:launchMode="singleTask"を設定しましたブラウザのような別のアプリに行ったり、ホーム画面を終了したりすると、Stackから削除されます。アプリに戻ると、アクティビティAに戻ります。

関連する問題