Android: когда следует использовать режим запуска singleInstance

Существует четыре режима запуска для Activity: стандартный, однозадачный, однозадачный и одноэкземплярный. Предыдущие три относительно просты для понимания и широко используются. Но до сих пор я не нашел ни одного сценария с использованием singleInstance.

Некоторые из реальных вариантов использования - это Activity для Launcher или приложение, которому вы являетесь 100 % уверен, что есть только одно действие

Кто-нибудь использовал это раньше?


person mianlaoshu    schedule 29.11.2016    source источник


Ответы (3)


Режим запуска SingleInstance следует использовать только в приложениях, которые полностью реализованы как одно действие. Единовременно будет существовать только один экземпляр. Система не будет запускать какие-либо другие действия в задаче этого типа. Он всегда является единственным участником своей задачи, и действия, начатые отсюда, открываются в отдельную задачу.

person Ritesh    schedule 29.11.2016
comment
Вам не нужно использовать singleInstance режим запуска, чтобы получить такое поведение. Стандартный режим запуска также должен дать вам такое поведение. В общем, использовать singleInstance режим запуска - плохая идея, если только вы не создаете замену домашнему экрану. - person David Wasser; 29.12.2016

Нет причин использовать singleInstance режим запуска.

Если вы создаете замену «домашнего экрана» или приложение типа запуска, вы должны использовать singleInstance или singleTask режим запуска, чтобы гарантировать, что ваш Activity всегда будет корнем его задачи. Это гарантирует, что если другое приложение запустит ваш Activity, это Activity не будет запущено в задачу вызывающего приложения, а также гарантирует, что будет создан только один экземпляр вашего Activity.

Если вы пишете приложение, заменяющее «домашний экран», вы всегда можете убедиться, что никакие другие действия не запускаются в вашу собственную задачу, всегда указывая Intent.FLAG_ACTIVITY_NEW_TASK при запуске других действий. В этом случае вы можете использовать режим запуска singleTask. Таким образом, нет причин использовать режим запуска singleInstance. Но, вероятно, в то время первоначальным разработчикам Android это было непонятно.

person David Wasser    schedule 29.12.2016
comment
Я использовал singleInstance, и я хочу, чтобы эта активность была ясна из backstack, чем я могу сделать ???? - person Sagar Poshiya; 15.07.2019
comment
@SagarPoshiya Пожалуйста, откройте новый вопрос и опишите вашу проблему. Задавать вопрос в комментариях - неправильный способ получить помощь. - person David Wasser; 15.07.2019

Режим запуска singleInstance будет использоваться, если вы не хотите, чтобы какие-либо другие действия были частью задачи. Это единственное действие в задаче. Поскольку этот режим запуска этого не позволяет.

person Braj Bhushan Singh    schedule 29.11.2016
comment
Я не думаю, что это ответ на вопрос. Мне слишком долго и скучно даже смотреть на него, чтобы убедиться, что он правильный или нет, но он не отвечает на вопрос OP, а именно: Когда мне следует использовать singleInstance режим запуска? - person David Wasser; 06.01.2017
comment
Отредактированный ответ.Проверьте еще раз. - person Braj Bhushan Singh; 16.03.2017
comment
Хорошо, а почему вам нужно, чтобы в задаче было только одно действие? Все еще не отвечает на вопрос :) - person IlyaEremin; 28.03.2017