Android MediaRouter(API 16) およびPresentation(API 17) クラスを使用して、セカンダリ ディスプレイを生成および管理しています。ApiDemosの例に従って、独自のミラーリングされていない出力を作成しましたが、これまでのところ正常に動作します (HDMI ケーブル経由で HDTV に接続された Nexus 10 でテスト)。
ここで、別の を呼び出したActivity Xとしても、 で作成されたプレゼンテーション オブジェクトをセカンダリ ディスプレイで引き続き実行したい状況があります。この状況では、はまだスタックにありますが、現在はスタックの一番上にあります。Activity XActivity YActivity XActivity Y
問題は、Activity Y起動時に物理セカンダリ ディスプレイがミラーリングに戻ることです。を終了すると、PresentationActivity Yの内容Activity X'sが戻ります (呼び出しdismiss()たことがないため)。
問題は、下位のアクティビティがローカル デバイスで実行されている場合でも、そのディスプレイで実行されているセカンダリ ディスプレイに接続されたプレゼンテーションを維持するにはどうすればよいかということです。
更新:Presentationこれを行う方法の 1 つは、バックグラウンド スレッドからオブジェクトをインスタンス化することです。その後、別のものを作成Activityしても、バックグラウンド スレッドによってそのPresentationオブジェクトに書き込まれているコンテンツに干渉してはなりません。しかし、バックグラウンド スレッドから UI を更新することは通常許可されていないため、これが機能するかどうかはわかりません。
Activityもう 1 つの方法は、可能であれば、下位の によるセカンダリ ディスプレイの使用を無効にすることです。これにより、新しいディスプレイActivityがアクティブになったときにセカンダリ ディスプレイがミラーリングに戻らないようにします。しかし、私はこれを行う方法も見つけていません。ご提案いただきありがとうございます。