Как запустить приложение на втором экране на устройствах с несколькими дисплеями

Я работаю над приложением Android, предназначенным для работы только на устройствах с двумя экранами (с API 29). У меня есть два связанных вопроса:

1. Можно ли запускать приложение прямо на втором дисплее вместо основного? Прямо сейчас он запускается на основном дисплее, и затем я могу запустить последующее действие на втором дисплее, используя ActivityOptions.

Например:

      val exampleIntent = Intent(this, ExampleActivity::class.java)
exampleIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(
    exampleIntent, 
    ActivityOptions.makeBasic().setLaunchDisplayId(secondDisplayId).toBundle() 
)

2) Можно ли явно завершить действие, выполняющееся на втором дисплее, перед его перезапуском?

У меня есть случай использования, в котором мне нужно перезапустить действие на втором дисплее (с основного дисплея), когда выполняется какое-то условие. Однако, если это действие уже выполняется на втором экране, оно не запускается повторно.

Есть ли способ завершить / закрыть это действие перед его запуском?

1 ответ

Можно ли запускать приложение прямо на втором дисплее вместо основного?

Это зависит от того, кто запускает. Например, если средство запуска выполняет запуск, средство запуска должно указать, что активность точки входа вашего приложения должна отображаться на дополнительном дисплее.

Можно ли явно завершить действие, выполняющееся на втором дисплее, перед его перезапуском?

Эта деятельность может вызвать покончить с собой. Вам нужно сказать упражнению, что нужно сделать это тем или иным способом, или же занятие должно знать само по себе, что пора заканчивать. Например, действие вторичного отображения может реагировать на то же условие, которое вы цитируете в следующем предложении:

У меня есть случай использования, в котором мне нужно перезапустить действие на втором дисплее (с основного дисплея), когда выполняется какое-то условие

Честно говоря, это похоже на ограничение кодирования, которое вы наложили сами. С точки зрения операционной системы непонятно, что вы получаете, уничтожая и воссоздавая активность.

И это поведение может выглядеть плохо, в зависимости от того, какую среду с двумя экранами вы используете. Например, если вторичный дисплей представляет собой что-то вроде телевизора, монитора или проектора, поведение Android по умолчанию - это зеркальное отображение основного дисплея на вторичном дисплее. Я ожидаю, что ваше предложенное поведение будет существенно мерцать:

  • Вы разрушаете старую второстепенную деятельность
  • Android начинает зеркальное отображение основного дисплея на дополнительном дисплее.
  • Вы начинаете замещающую второстепенную деятельность

Итак, я бы очень постарался, чтобы не пришлось разрушать и перезапускать деятельность. Например, возможно, на дополнительном дисплее должно отображаться не действие, а скорее (что больше похоже на ). Или, возможно, второстепенное действие может просто обновить свой собственный пользовательский интерфейс в ответ на указанное вами условие, вместо того, чтобы его нужно было перестраивать с нуля.

Другие вопросы по тегам