2013-09-20 3 views
0

Я разрабатываю редактор документов в android, который имеет DashBoard в качестве MainActivity, и я открою редактор, который является еще одним видом редактирования. Я также позволяет открывать документы в SDCard Поставив записей какИзбегайте двух экземпляров в android

<data 
    android:host="*" 
    android:mimeType="*/*" 
    android:pathPattern=".*\\.doc" 
    android:scheme="file" /> 

Теперь вопрос, сначала я открыл Dashboard, затем я нажал кнопку устройства домой, что делает состояние паузы деятельности. Я перехожу на SDCard и открываю документ, который создает другой файл DashBoardActivy для импорта файла. Как избежать создания двух экземпляров?

+0

Вы получили много хорошие ответы на ваши предыдущие вопросы. Если они решили проблему для вас, отметьте их как принятый ответ. – acj

ответ

0

В вашем манифесте необходимо указать launchMode для DashBoardActivity. Выбор правильного режима зависит от поведения, которое вы хотите. Например, singleInstance будет гарантировать, что только один экземпляр DashBoardActivity никогда не получает создан:

<activity [...] android:launchMode="singleInstance" /> 

Однако, это также означает, что вы можете использовать только деятельность для одной цели. Аналогичный вариант, который является менее ограничительным, - singleTop.

+0

Если активность панели инструментов открывает активность редактора, тогда редактор будет в верхней части стека. Если я снова создаю панель инструментов, открывая документы на устройстве, как он будет себя вести – vignesh

+0

Когда вы открываете документ, тот же экземпляр «DashBoardActivity» будет помещен в верхнюю часть стека. – acj

+0

В этом случае после нажатия кнопки «домой» при открытии документа из проводника файла устройства будет вызываться активность панели управления onRestart(). Но я не получаю путь к выбранному файлу (например, bundle in onCreate). – vignesh

0

Дело просто называют можно избежать, если вы отмечаете его в файле манифеста, как launchMode = SingleTop , но это будет в том случае, вы упомянули «как вы нажали на кнопку домой» что будет сохраните предыдущий экземпляр в заднем стеке, поэтому на этот раз, когда вы попытаетесь запустить эту операцию, будет использоваться предыдущий экземпляр (сидящий в верхней части задней части).

стек: INSTANCE1 actionperformed: нажмите кнопку домой

стек остается тем же стеки: ЭКЗЕМПЛЯР1

actionperformed: попытаться запустить деятельность снова для нового документа стек: INSTANCE1 (снова активируется через onNewIntent())

так что теперь, как INSTANCE1 не на вершине, не новый экземпляр будет запущен, как отмечается единственный верхний

для получения дополнительной информации посетите android document for these flags

надеюсь, что это помогает

Смежные вопросы