2011-02-03 3 views
4

У меня есть действие, в котором первое, что он делает, это запуск другого действия для результата. когда результат вернется, он должен обработать его, а затем закончить. У меня есть startActivityForResult() звонок в onCreate().Шаблон для активности, начинающегося с другой деятельности (для результата)

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

Это имеет смысл, и я понимаю, почему это так, но я не понимаю правильного шаблона для того, чего я пытаюсь достичь. Когда я вернусь из активности, которую я начал, я не хочу снова снова запускать целевую активность ... Я просто хочу запустить onActivityResult() и закончить.

Я прочитал, где кто-то предложил установить предпочтение штата, но это похоже на хороший источник ошибок, например, если он застрял в неправильном состоянии.

Любые мысли?

+0

Почему бы не обработать результат в первом действии, а не перейти к другому? Или вы используете его как своего рода завод? – xil3

+0

Я думаю, что ваш шаблон дизайна здесь испорчен. Зачем вам нужна активность, которая не взаимодействует с пользователем и просто обрабатывает результаты. Похоже, вам нужна услуга. – user432209

+0

У меня нет контроля над вторым действием. –

ответ

2

нижеследующий здесь с разрешением. ключ - запустить целевую активность в onResume(), а не onCreate(). от Javadocs на onActivityResult(),

Вы получите этот вызов немедленно перед тем onResume(), когда ваша деятельность повторно начинается.

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

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