web-dev-qa-db-ja.com

Android-複数のアクティビティを開始します

一度に複数のアクティビティを開始することは可能ですか?つまり、メインからいくつかの順序で3つのアクティビティを作成すると、最後のアクティビティだけが表示されますか?これまでは、アクティビティを1つしか作成できませんでした。

ありがとう

24
Waypoint

たとえば、ユーザーが通知をクリックした後にアプリを深く起動して、新しく追加されたコンテンツを表示するために、このようなものが必要になる場合があります。

Intent i = new Intent(this, A.class);
i.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(i);

Intent j = new Intent(this, B.class);
j.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(j);

Intent k = new Intent(this, C.class);
startActivity(k);

このようにして、アクティビティA、B、Cを同時に開始し、アクティビティAとBへの遷移を抑制できます。現在のアクティビティからアクティビティCへの単一の遷移を取得します。アクティビティライフサイクルメソッドの呼び出しをログに記録することを強くお勧めします( onCreateなど)をLogCatなどに追加します。イベントの順序を理解するのに役立ちます。

42
Raginmari

これは、ディープリンクや、基本的にタスク(およびタスクに含まれるすべてのアクティビティ)を総合的に再構築する必要がある他のユースケースに対応して行う一般的なことです。マニフェストでparentsを指定するだけでは不十分な場合があります。

TaskStackBuilder を見てください。 1つの一般的な例:

TaskStackBuilder.create( this )
        .addNextIntent( intentOnBottom )
        // use this method if you want "intentOnTop" to have it's parent chain of activities added to the stack. Otherwise, more "addNextIntent" calls will do.
        .addNextIntentWithParentStack( intentOnTop )
        .startActivities();
17
gMale

本当に古い質問ですが、まだ答えたいと思いました。

使用: public void startActivities(Intent [] intents、Bundle options)

12

最初のアクティビティのonCreate- Methodの最後にstartActivity(new Intent(...);を試してください。これにより、すぐに新しいアクティビティが起動し、最初のアクティビティが一時停止します。バックキーを使用すると、最後のアクティビティに戻ります

2
Thommy