0

アプリAには、起動モードが標準で設定されているメインアクティビティがあり、それを開きます。システムランチャーから再度開くと、すべて正常に見えます。しかし、別のアプリ B からアプリ A を起動すると、A が再起動します。なんで?

私のコード:

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("A's package name");
    launchIntent.setAction(Intent.ACTION_MAIN);
    launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    launchIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    startActivity(launchIntent);
4

1 に答える 1

0

android:launchModeアクティビティのデフォルトはhttps://developer.android.com/guide/topics/manifest/activity-element.html#lmodeStandardに従っています

上記のリンクから:

「標準」アクティビティの新しいインテントがあるたびに、そのインテントに応答するためにクラスの新しいインスタンスが作成されます

したがって、インテントを開始するのと同じくらい onCreate() が呼び出されます

これはアプリ用でしたが、Android ランチャーの場合は異なり、どちらを使用Tasksしますか

特定のジョブを実行するときにユーザーが操作するアクティビティのコレクション

ここで定義https://developer.android.com/guide/components/tasks-and-back-stack.html

これらのタスクは、スタック内のアクティビティの順序を保持するため、最初に再開するアクティビティを認識します。

この引用は、Android デバイスのホーム画面に関するあなたの質問に答えます:

デバイスのホーム画面は、ほとんどのタスクの開始場所です。ユーザーがアプリケーション ランチャーのアイコン (またはホーム画面のショートカット) に触れると、そのアプリケーションのタスクが前面に表示されます。アプリケーションのタスクが存在しない場合 (アプリケーションが最近使用されていない場合)、新しいタスクが作成され、そのアプリケーションの「メイン」アクティビティがスタックのルート アクティビティとして開きます。

于 2015-08-15T05:55:46.443 に答える