2

Android Lollipop の変更に従って、次を参照してください。

スタックオーバーフローの質問

チーズ工場のブログ

自分のアプリケーションから他のアプリケーションのアクティビティを開始すると、動作がデフォルト (launchmode が標準) であっても、新しいタスクで開く必要があると思います。そこで、同じ動作を確認するために 2 つのテスト アプリを作成しました。しかし、驚いたことに、起動モードが指定されていない場合、他のアプリは常に私のアプリのタスクで開きます。これを Xiaomi Redmi Note 3 (5.1.1)、Marshmallow エミュレーター (x86) でテストしましたが、動作はどちらも同じです。これについての助けと、Android 開発者のサイトからの参照用のリンクをいただければ幸いです。

いくつかのコード:

Launching app : 
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
startActivity(intent);
break;

App to be launched : 
<activity android:name="com.android.sample.launchdemo.ActivityB">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.SEND"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
</activity>

アプリの起動からボタンをクリックすると、インテントが起動され、アクティビティ B が正常に開きますが、同じタスク内にあります。ヘルプ/提案をお寄せいただきありがとうございます。

4

2 に答える 2

2

ドキュメントを読んで感じたのは、標準モードは Android 5.0 (Lollipop) 以前と同じように機能するということです。チーズ工場のブログ投稿は、そのアクションを指定した唯一のものであり、私自身の経験でも、標準の起動モードは、送信されたのと同じタスクでアクティビティを開きました (インテント フラグが渡されない限り)。私が間違っている場合は誰かが私を修正しますが、Android のドキュメントでは、標準モードで新しいタスクを開くことは指定されていません。Androidのドキュメントから:

"standard" (デフォルト モード): システムは、開始元のタスクでアクティビティの新しいインスタンスを作成し、インテントをそこにルーティングします。アクティビティは複数回インスタンス化でき、各インスタンスは異なるタスクに属することができ、1 つのタスクは複数のインスタンスを持つことができます。完全なドキュメントを見る

探しているものについては、 を起動するときにIntent、新しいタスクを保証する唯一の方法は flag を使用することFLAG_ACTIVITY_NEW_TASKです。intent.setFlag(Intent.FLAG_ACTIVITY_NEW_TASK)これは、 or のいずれかを呼び出すことで設定できますintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)(後者はフラグを連鎖させるためのもので、そのメソッドはインテントを返すためです)。

さらに調査を行った結果、(これに関連して) Android 5.0 Lollipop で行われたように見える唯一の変更は、最近のアプリ画面にアクティビティの複数のインスタンスを表示できることです。

以前のリリースでは、最近の画面には、ユーザーが最近操作したアプリごとに 1 つのタスクしか表示できませんでした。これで、アプリは、ドキュメントの追加の同時アクティビティに対して、必要に応じてより多くのタスクを開くことができます。この機能により、ユーザーは最近の画面から個々のアクティビティとドキュメントをすばやく切り替えることができるため、マルチタスクが容易になり、すべてのアプリで一貫した切り替えエクスペリエンスが得られます。このような同時タスクの例としては、Web ブラウザー アプリで開いているタブ、生産性アプリでのドキュメント、ゲームでの同時対戦、メッセージング アプリでのチャットなどがあります。

私にはこれが関連する唯一の変更のように思え、投稿 (cheesefactory と SO) はdocumentLaunchMode各アクティビティに対して新しいタスクを作成するように設定されています (チーズファクトリーに「ギャラリー」アプリがあったことを考えると、これは非常によくあることです)。並行ドキュメントdocumentLaunchMode に関するドキュメント。documentLaunchMode同様のことを行うようにフラグFLAG_ACTIVITY_NEW_TASKを構成できることdocumentLaunchModeが推奨されます。

于 2016-06-22T02:36:44.617 に答える