Передача пакета в действие, заданное как синглетская задача - PullRequest
3 голосов
/ 22 апреля 2010

Итак, у меня есть MapActivity, которое запускает асинхронную задачу, которая иногда обновляет то, что именно она отображает на карте (через строку).Я изначально передаю эту строку из намерения при первом создании действия.И затем, если вы щелкнете по одному из элементов на карте, он откроет новое действие, которое затем может создать новое представление карты (того же класса) с другим параметром строки.У меня проблема в том, что я хочу, чтобы только один экземпляр карты работал одновременно.Таким образом я установил android: launchmode = "singletask" в манифесте.Это работает в том смысле, что выводит mapacctivity на передний план, но есть ли способ отправить ему новый пакет намерений, чтобы получить новый параметр для нужной ему строки?Я попытался получить дополнительные функции из пакета, но, похоже, он сохраняет старый пакет, а не новое намерение, которое было ему передано.Я не уверен, что хочу сделать startActivityForResult, потому что 2-е действие может или не может хотеть обновить исходное действие.

Надеюсь, это имело смысл.Я могу опубликовать код, если это необходимо, но я думаю, что это должно объяснить мою ситуацию.

1 Ответ

9 голосов
/ 24 августа 2010

Когда ваша активность, помеченная как singleTask, уже запущена, и ей отправляется новый Intent, вам будет вызван onNewIntent.

Byпо умолчанию это новое намерение не не сохраняется каким-либо образом после возврата этого вызова, а реализация по умолчанию ничего не делает.Если вы переопределите onNewIntent, вы можете обработать дополнительные элементы, прикрепленные к новому намерению, непосредственно оттуда и / или использовать setIntent, чтобы присоединить новое намерение к вашему действию, чтобы будущие вызовы getIntent().get*Extra(...) возвращали обновленные данные.

Обратите внимание, что существует один особый случай: если ваше действие singleTask запустило другое действие в своей задаче (т.е. встраиваемое действие без флага NEW_TASK), то это действие выйдет на передний план, когда ваша деятельность получит намерение,но само намерение тогда будет молча отброшено.Будьте осторожны с этим.См. Руководство разработчика для получения дополнительной информации.

...